我有一个试图通过 Entity Framework 4.3 访问的现有数据库。大多数表格和关系都不是问题,但是这组表格给我带来了一些我似乎无法找到答案的问题。
以下是(浓缩的)实体:
顾客
public class Customer
{
public int CustomerID { get; set; }
public string Name { get; set; }
private int addressSourceTypeID = 2;
[NotMapped]
public int AddressSourceTypeID {
get { return addressSourceTypeID; }
set { addressSourceTypeID = value; } }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
合同
public class Contract
{
public int ContractID { get; set; }
public string Name { get; set; }
private int addressSourceTypeID = 4;
[NotMapped]
public int AddressSourceTypeID {
get { return addressSourceTypeID; }
set { addressSourceTypeID = value; } }
public virtual int CustomerID { get; set; }
public virtual Customer Customer { get; set; }
//public virtual ICollection<Address> Addresses { get; set; }
}
地址
public class Address
{
[Key]
public int AddressID { get; set; }
public int AddressSourceTypeID { get; set; }
[ForeignKey("Customer")]
public int SourceKey { get; set; }
public virtual Customer Customer { get; set; }
//public virtual Contract Contract { get; set; }
public virtual ICollection<Contact> Contacts { get; set; }
}
我上面有两个实体Customer
,Contract
它们都可以有Address
子实体。当前,Address
实体设置为Customer
实体的子实体,并且由于没有指向Contract
from的链接,因此可以正常工作Address
。
正如您从注释掉的代码段中看到的那样,我已经尝试像对实体所做的那样添加Contract
到实体中。不幸的是,这不起作用,但由于在ForeignKey 注释中的引用,我并不感到惊讶。我什至尝试创建实体的特定版本(即),但是当多个实体尝试绑定到同一个表时出现错误。Address
Customer
Customer
Address
Address
CustomerAddress
我也尝试ModelBuilder
在 EF中使用,DBContext
但是我在这里的知识非常有限,我不知道在这种情况下该怎么做。
总的来说,我需要的是以下内容:
- 拥有一组子地址的客户实体。
- 合同实体拥有一组子地址。
这些“父”表与地址表之间的链接使用以下内容:
- 客户:CustomerID => 地址:SourceKey 和客户:AddressSourceTypeID(始终为 2)=> 地址:AddressSourceTypeID。
- 合同:ContractID => 地址:SourceKey 和合同:AddressSourceTypeID(始终为 4)=> 地址:AddressSourceTypeID。
如果有人可以帮助我或为我指出正确的方向,那就太好了。
非常感谢。