0

最初にエンティティ フレームワーク/コードで既存のオブジェクト モデルのプロトタイピングを開始したところ、最初の問題にぶつかりました。残念ながら、これに関するドキュメントは非常に少ないようです。

私のキーはプリミティブではなく、プリミティブをラップするオブジェクトです。これを最初にEF/コードで動作させるにはどうすればよいですか:

public class EFCategoryIdentity 
{
    public string IdentityValue { get; private set; }
    public EFCategoryIdentity(string value)
    {
        IdentityValue = value;
    }
}

public class EFCategory
{
    [Key]
    public EFCategoryIdentity CategoryIdentity { get; set; }
    public string Name { get; set; }
    public virtual ICollection<EFProduct> Products { get; set; }
}

public class EFProduct
{
    [Key]
    public int ProductId { get; set; }
    public string Name { get; set; }
    public virtual EFCategory Category { get; set; }
}

これを機能させるには、ここに何を入れる必要がありますか?

public class MyTestContext : DbContext
{
    public DbSet<EFCategory> Categories { get; set; }
    public DbSet<EFProduct> Products { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<EFCategory>()
            .// Help!
    }
}

ありがとう!

4

1 に答える 1

0

エンティティ フレームワークは、プリミティブ型のみをキーとして使用できます。マップされたプロパティを別の型にラップするたびに、複雑な型が作成されます。複合型にはいくつかの制限があります

  • それらはキーになることはできません
  • キーを含めることはできません
  • ナビゲーション プロパティを含めることはできません
于 2012-05-15T06:28:45.363 に答える