2012-08-01 168 views
1

我只是想嘗試實體框架來使用它而不是NHibernate。我正在使用MySql數據庫。 所以我用代碼第一個系統做了一些測試。一切正常與MsSql數據庫和架構是自動生成的。但後來我用MySql嘗試了它,並且模式生成不起作用。實體框架代碼優先 - 使用MySql創建數據庫?

public class Context : DbContext 
{ 
    public Context() 
    { 

    } 

    public Context(string str) 
     : base (str) 
    { 

    } 

    public DbSet<User> Users 
    { 
     get; 
     set; 
    } 
} 

public class User 
{ 
    public int Id 
    { 
     get; 
     set; 
    } 

    public string Name 
    { 
     get; 
     set; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var sqlBuilder = 
      new SqlConnectionStringBuilder 
      { 
       DataSource = "localhost", 
       InitialCatalog = "test", 
       Password = "", 
       UserID = "root" 
      }; 

     var entityBuilder = 
      new EntityConnectionStringBuilder 
      { 
       Provider = "MySql.Data.MySqlClient", 
       ProviderConnectionString = sqlBuilder.ConnectionString, 
       Metadata = @"res://*" 
      }; 

     var str = entityBuilder.ConnectionString; 

     using (var ctx = new Context(str)) 
     { 

      ctx.Users.Add(new User() // exception here 
      { 
       Name = "test" 
      }); 

      ctx.SaveChanges(); 
     } 

     using (var ctx = new Context(str)) 
     { 
      foreach (var user in ctx.Users) 
      { 
       Console.WriteLine("id:{0} name:{1}", user.Id, user.Name); 
      } 
     } 
    } 
} 

而我得到這個異常:「實體類型用戶不是當前上下文的模型的一部分。」

所以這裏是我的問題,如果我使用MySql,我可以自動生成數據庫嗎?

+0

我只是在程序集上添加[assembly:EdmSchema] EdmEntityType] on User類,現在我得到這個異常:「該類型沒有任何關鍵成員。RelationshipType或EntityType必須具有關鍵成員或具有關鍵成員的BaseType。」但是我已經有了Id屬性,而且我也嘗試過使用[Key]屬性,它也是一樣的錯誤。 – Tim 2012-08-02 09:11:49

回答