我是EF的新手,我与一对一的关系有些问题。 我有以下消息,我不明白为什么:
指定的包含路径无效。 EntityType 'ConsoleApplication1.Order'未声明导航属性 名为'orderAdress'。
我使用的代码如下。希望有人可以帮助我。
public class Order
{
public int OrderNo { get; set; }
public OrderAdress Adress { get; set; }
public int CustomerNo { get; set; }
}
public class OrderAdress
{
public int OrderNo { get; set; }
public Order Order { get; set; }
public string country { get; set; }
}
public class Context : DbContext
{
public DbSet<Order> Orders {get; set;}
public DbSet<OrderAdress> OrderAdresses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new OrderMap());
modelBuilder.Configurations.Add(new OrderAdressMap());
modelBuilder.Entity<Order>()
.HasRequired(order => order.Adress)
.WithRequiredDependent(orderAdress => orderAdress.Order);
}
}
public class OrderMap : EntityTypeConfiguration<Order>
{
public OrderMap()
{
HasKey(t => t.OrderNo);
Property(t => t.CustomerNo);
}
}
public class OrderAdressMap : EntityTypeConfiguration<OrderAdress>
{
public OrderAdressMap()
{
HasKey(t => t.OrderNo);
Property(t => t.country);
}
}
答案 0 :(得分:1)
您似乎错过了Navigation Property
中的EF design
设置。
有关EF和处理导航属性的非常好的概述:http://msdn.microsoft.com/en-us/data/jj713564.aspx
以下是我发布的链接中的一个示例:
确保您已在设计中正确设置关系,并检查您的班级并与上面链接中提供的示例进行比较。
答案 1 :(得分:0)
这是因为您的地址表不包含任何主键。将主键添加到磁带。