我有一个数据库,我想知道如何通过代码映射关系。我不确定我是否理解这是如何工作的。
假设我有两个类:
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调用中的属性。因此,请提出建议/提供答案。
答案 0 :(得分:1)
您需要HasRequired,WithMany和HasForeignKey配置方法。
EntityTypeConfiguration<Shipment> config = modelBuilder.Entity<Shipment>();
config
.HasRequired(s=>s.ShipToAddress)
.WithMany()
.HasForeignKey(s=>s.ShipToAddressID)
.WillCascadeOnDelete(false);