EF代码首先出现关系错误

时间:2014-02-27 14:18:52

标签: c# entity-framework

我是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);
    }
}

2 个答案:

答案 0 :(得分:1)

您似乎错过了Navigation Property中的EF design设置。

有关EF和处理导航属性的非常好的概述:http://msdn.microsoft.com/en-us/data/jj713564.aspx

以下是我发布的链接中的一个示例:

enter image description here

enter image description here

确保您已在设计中正确设置关系,并检查您的班级并与上面链接中提供的示例进行比较。

答案 1 :(得分:0)

这是因为您的地址表不包含任何主键。将主键添加到磁带。