2011-09-26 19 views
5

私はデータを(MySQLで)管理するために、まずMicrosoft Entity Frameworkをコードで使用しています。ただし、POCOオブジェクトを定義しましたが、データを追加しようとすると、テーブルUsersは存在しません。私はDBを見て、ユーザーのユーザーではないテーブルを作成しました。どのように私はこれを改善することができますか?それは私のナッツを運転している!Entity Frameworkコードの最初のMySql Pluralizingテーブル

ありがとうございます!

public class User 
{ 
    [Key,Required] 
    public int UserId { get; set; } 

    [StringLength(20), Required] 
    public string UserName { get; set; } 

    [StringLength(30), Required] 
    public string Password { get; set; } 

    [StringLength(100), Required] 
    public string EmailAddress { get; set; } 

    [Required] 
    public DateTime CreateDate { get; set; } 

    [Required] 
    public bool IsActive { get; set; } 
} 
+0

あなたが使用しているコネクタとバージョン(... MySQLのとそれを試していませんか)? – gordatron

+0

こんにちはmysqlコネクタネット6.3.7 –

+0

また、[テーブル( "ユーザ")]をclassitの上に追加しても、idはむしろそれを行う必要はありません。 –

答えて

3

私はまだEFでMySQLを使用していませんが、ソリューションがunbiasであるとは限りません。 Pluralize Table Conventionをオフにする必要があります。

using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db; 

public class MyDbContext: DbContext 
{ 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    {  
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
} 

ここで、EFはオブジェクト名からテーブル名へのリテラルを探します。

いくつかの素晴らしいビデオチュートリアルは、Continue Learning Entity Frameworkの下のhttp://msdn.microsoft.com/en-us/data/aa937723にあります。追加の学習経験のために、上記を指定することはできませんが、オブジェクト 'user'をテーブル 'user'に明示的にマッピングすることができます。

その他の参考資料: http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx

+0

ありがとう!明確な説明とリンクがあるので、あなたにそれをあげてください!再度、感謝します –

2

あなたは、テーブルの名前を伝えるクラスに属性を置くことができます。

[Table("Users")] 
public class User 
{ 
    //... 
} 

...またはあなたが流暢なAPIを使用することができます。これを行うには、DbContextクラスのOnModelCreatingメソッドをオーバーライドします。

public class MyDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>().Map(t => t.ToTable("Users")); 
    } 
} 

将来のバージョンのEFでは、独自の慣習を書くことが約束されています。ザッツないでそこにまだバージョン4.1 ...のよう

4
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 

namespace YourNamespace 
{ 
    public class DataContext : DbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder dbModelBuilder) 
     { 
      dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 

     public DbSet<User> User { get; set; } 
    } 
} 
関連する問題