0

我刚开始先在实体框架/代码中对我们现有的对象模型进行原型设计,然后遇到了我的第一个障碍。不幸的是,这方面的文档似乎非常稀缺。

我的密钥不是原始的,而是包装原始的对象。我如何让它首先与 EF/Code 一起使用:

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 回答