我正在尝试为现有数据库创建 EDMX 模型,数据库具有以下架构(不是最好的,但这是我拥有的,我无法更改它):
Table: ObjectTypes (ObjectTypeID "Identity", ObjectName)
Data: 1, Customer
Data: 2, Agent
Table: Customers (CustomerID "Identity", FName, LName, AgentID)
Data: 1, FTest, LTest, 1
Table: Agent (AgentID "Identity", AgentName, AgentCommission)
Data: 1, TestAgent, 10.0
Table: Contacts (ContactID "Identity", ObjectTypeID, ObjectID, ContactName)
Data: 1, 1, 1, CustomerTestContact
Data: 2, 1, 1, CustomerTestContact2
Data: 3, 2, 1, AgentTestContact
Data: 4, 2, 1, AgentTestContact2
现在我需要为联系人创建具有导航属性的代理和客户实体。
For contacts of agents: Agents A JOIN Contacts C ON A.AgentID = C.objId AND C.objType = 2
For contacts of customers: Customers Cust A JOIN Contacts C ON Cust.CustomerID = C.objId AND C.objType = 1
我怎样才能做到这一点?
我尝试使用继承(客户和代理从 ObjectTypes 继承),然后为每个类添加 ObjectTypeID 的条件(客户 = 1,代理 = 2),但我收到可以完成的错误,因为 ObjectTypes 中的 ObjectTypeID 定义为 Identity柱子。
我不确定我是否走正确的路,但我找不到另一条路。
实际上,我什至不知道是否可以使用 EF 实现这一点。
谢谢你。