Entity framework 如何对表进行建模,使其由具有0对多关系的其他表共享?
我想在我的客户和供应商之间共享实体联系人 客户可以有很多联系人 供应商可以有很多联系人 …但当我制作模型时,遇到了一个问题,现在我必须向每个联系人提供CustomerId和VendorIdEntity framework 如何对表进行建模,使其由具有0对多关系的其他表共享?,entity-framework,ef-model-first,Entity Framework,Ef Model First,我想在我的客户和供应商之间共享实体联系人 客户可以有很多联系人 供应商可以有很多联系人 …但当我制作模型时,遇到了一个问题,现在我必须向每个联系人提供CustomerId和VendorId 我会发布我模特的照片,但我还没有10分。如果你处理的是多对多关系,你很可能必须使用 这意味着有两个附加表,每个表有两列: VendorsContacts与主键::VendorID,ContactID CustomerContacts与主键::CustomerID,ContactID 这些表的主键需要是,即两个
我会发布我模特的照片,但我还没有10分。如果你处理的是多对多关系,你很可能必须使用 这意味着有两个附加表,每个表有两列: VendorsContacts与主键::VendorID,ContactID CustomerContacts与主键::CustomerID,ContactID 这些表的主键需要是,即两个键一起用作单个主键。在SQL Server中,通过使用CTRL标记两列并创建主键来实现。您会注意到它们都被标记为主 EntityFramework不会为连接表创建实体类,您将通过yourCustomer.Contacts和类似的yourVendor.Contacts直接访问给定客户/供应商的联系人 客户可以有很多联系人 供应商可以有很多联系人 正如你所说,客户和联系人之间以及联系人和供应商之间的关系似乎是零或一对多 因此,您可以将CustomerId和VendorId设置为空:
我先用模型。我确实在这两个属性上都将nullable设置为true。我已更改为0/1客户/供应商多联系人。当我第一次测试数据库时,EF将nullable属性设置为NONE。它现在可以工作了,没有错误,但我想知道这是正常的在表之间共享联系人,还是有更标准的方式。在您的项目中,几个客户或供应商可以有一个给定的联系人吗?因为使用这种结构,您不能将同一个联系人链接到多个客户或供应商。不,我认为如果客户和供应商都共享联系人,这是没有意义的-我应该重新考虑吗?
public class Contact
{
public int Id { get; set;}
public int? CustomerId {get; set;}
public int? VendorId {get; set;}
// other properties
}
public class Customer
{
public int Id { get; set;}
public ICollection<Contact> Contacts {get; set;}
//other properties
}
public class Vendor
{
public int Id { get; set;}
public ICollection<Contact> Contacts {get; set;}
//other properties
}