首先在数据库中的EF导航属性

时间:2015-08-14 15:30:52

标签: c# entity-framework

我有一个数据库,我想知道如何通过代码映射关系。我不确定我是否理解这是如何工作的。

假设我有两个类:

public class Address
{
    [Key]
    public int AddressID {get;set;}
    public String Street {get;set;}
}

public class Shipment
{
    [Key]
    public int ShipmentID {get;set;}
    public int ShipToAddressID {get;set;}

    public virtual Address ShipToAddress {get;set;}
}

我有几个问题: 导航属性是否只允许我访问地址的dbset? 似乎并非如此。但是,如果不是,如何指定哪个属性是存在关系的外键?例如:如何告诉此导航属性它应该基于AddressID属性匹配Address实体?

同样,我通过代码完成所有这些工作。所以我在上下文中映射OnModelCreating调用中的属性。因此,请提出建议/提供答案。

1 个答案:

答案 0 :(得分:1)

您需要HasRequired,WithMany和HasForeignKey配置方法。

EntityTypeConfiguration<Shipment> config = modelBuilder.Entity<Shipment>();

config
   .HasRequired(s=>s.ShipToAddress)
   .WithMany()
   .HasForeignKey(s=>s.ShipToAddressID)
   .WillCascadeOnDelete(false);