1

EFCTP5を新しいプロジェクトに実装し始めたところです。この場合、データベースの命名規則があいまいなため、すべてのデータベースフィールドの名前はPOCOプロパティとは異なります。これをマッピングする最良の方法は、OnModelCreatingをオーバーライドして、次のようなコードを作成することです。

    modelBuilder.Entity<Sale>().Property(s => s.ID).HasColumnName("sale_id");
    modelBuilder.Entity<Sale>().Property(s => s.ProductName).HasColumnName("product_name");
    modelBuilder.Entity<Sale>().Property(s => s.ProductPrice).HasColumnName("product_price");
    modelBuilder.Entity<Sale>().Property(s => s.SaleDate).HasColumnName("sale_date");

これは非常に速く非常に大きくなるでしょう、それは本当にこれを行うための最良の方法ですか?

4

2 に答える 2

3

新しいCTP5列属性の使用を検討する必要があると思います。この場合、流暢なAPIよりもデータアノテーションを使用する方が良い選択のようです。Saleクラスは次のコードのようになります。

public class Sale
{
    [Column(Name="sale_id")]
    public int ID { get; set; }

    [Column(Name="product_name")]
    public string ProductName { get; set; }

    [Column(Name="product_price")]
    public string ProductPrice { get; set; }

    [Column(Name="sale_date")]
    public DateTime SaleDate { get; set; }
}
于 2010-12-13T14:48:50.250 に答える
1

答えてくれてありがとう

エンティティをデータレイヤーから分離したままにしておきたかったので、私は元のアプローチに固執することになりました。

ただし、管理しやすくするために、コンテキストを部分クラスにし、MapUsersやMapRolesなどのプライベートメソッドを使用してエンティティごとにファイルを作成し、OnModelCreatingでこれらのメソッドを呼び出しました。

于 2011-01-05T09:59:26.743 に答える