Luc*_*Sam 19 c# entity-framework entity-framework-ctp5
这是我的模型:
public class Customer
{
public int ID { get; set; }
public int MailingAddressID { get; set; }
public virtual Address MailingAddress { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int ID { get; set; }
public int CustomerID { get; set; }
public virtual Customer Customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
客户可以拥有任意数量的地址,但这些地址中只有一个可以是邮寄地址.
如果我只使用一个,我可以得到One to One关系,One to Many工作得很好,但是当我尝试介绍两者时,我在Addresses表上获得了多个CustomerID键(CustomerID1,CustomerID2,CustomerID3).我真的把头发撕成了这个.
为了映射一对一的关系,我使用这里描述的方法http://weblogs.asp.net/manavi/archive/2011/01/23/associations-in-ef-code-first-ctp5-part- 3,一到一个外键,associations.aspx
Luc*_*Sam 18
我几乎整天都在努力解决这个问题,当然我等到最终搞清楚之后再问这里!
除了实现博客中展示的一对一之外,我还需要使用流畅的api来指定多对多,因为单独的约定不足以存在一对一的关系.
modelBuilder.Entity<Customer>().HasRequired(x => x.PrimaryMailingAddress)
.WithMany()
.HasForeignKey(x => x.PrimaryMailingAddressID)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Address>()
.HasRequired(x => x.Customer)
.WithMany(x => x.Addresses)
.HasForeignKey(x => x.CustomerID);
Run Code Online (Sandbox Code Playgroud)
这是数据库中的最终模型:

| 归档时间: |
|
| 查看次数: |
15075 次 |
| 最近记录: |