在代码第一个Entity Framework 5中定义相关集合的正确方法是什么? 我跟着这个summary,但有些东西不起作用。
我有以下型号:
class Order
{
public Guid Id {get; set; }
public DateTime Created {get; set;}
public ICollection<OrderLine> OrderLines {get; set;}
}
class OrderLine
{
public Guid Id {get; set;}
public Guid OrderId {get; set;}
public Order Order {get; set;}
public string Product {get;set;}
}
class OrderContext : DbContext
{
public DbSet<Order> Orders { get; set; }
public DbSet<OrderLine> OrderLines { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
数据库中有一些Order
行。加载时,OrderLines
属性为null。
我尝试过OrderLines
虚拟,但没有帮助。
否则,一切都设置为默认值。延迟加载为true,CreateProxy为true ...
当我尝试Include("OrderLines")
时,它可以工作并从DB中获取行。
答案 0 :(得分:2)
在OrderLine
尝试在导航属性上放置FK注释:
class OrderLine
{
public Guid Id {get; set;}
public string Product {get;set;}
// 1:many with Order
public virtual Guid OrderId {get; set;}
[ForeignKey("Id")]
public virtual Order Order {get; set;}
}
答案 1 :(得分:1)
使用数据注释来注释外键属性。您不再需要使用Fluent API。
[ForeignKey("Id")]
public virtual ICollection<OrderLine> OrderLines {get; set;}
我原本以为它会默认创建它。