我有两个概念相关的表但原始编码器没有在表之间创建任何FK关系。
表1:
TABLE [Name](
ID [varchar](10) NOT NULL (this is the PK),
MAIL_ADDRESS_NUM [int] NOT NULL,
BILL_ADDRESS_NUM [int] NOT NULL,
Shipping_Address_Num [int] Not Null
)
表2:
TABLE [Address](
ID [varchar](10) NOT NULL,
ADDRESS_NUM [int] NOT NULL (this is the PK),
PURPOSE [varchar](20) NOT NULL
)
如果我有选项,我会将FKs放在MailingAddress到AddressNumber,BillingAddress放到AddressNumber,将ShippingAddress放到AddressNum。但这不是一种选择。
目前在我的LINQ中我做了类似的事情:
from n in Names.Where(predicate)
join ba in db.Addresses on n.BillingAddressNumber equals ba.AddressNumber
join sa in db.Addresses on n.ShippingAddressNumber equals sa.AddressNumber
join ma in db.Addresses on n.MailingAddressNumber equals ma.AddressNumber
如果我正确理解EF和linq,我应该能够在Edmx设计界面上/中创建该关联并简化我的查询。正确的吗?
如果是这样,需要采取哪些步骤来为Edmx文件添加正确的关联?我找到了一些引用,但它们似乎涉及相当多的操作底层XML文件。这有必要吗?这些表也是严格只读的。使用VS2012和EF5。