我有一个遗留数据库,其中有一个名为Address的表。现在另外两个表可以分配给它的地址信息。要确定它来自哪个表,有一个SourceID字段。如果SourceID为1,则它与第一个表相关联,如果为2,则为第二个表的地址信息。
此旧数据库没有在数据库上定义任何外键约束,也无法添加。
我想知道我是否使用Entity Framework来创建一个具有此关联的模型。表1中的实体可以具有导航到地址信息的实体(条件是SourceID = 1)并且与第二个表相同。
我尝试创建条件映射并设置“当SourceID = 1”时我也从列映射中删除了映射,因为列只能映射一次。当我尝试编译时,我收到以下错误:
错误3004:从第683行开始映射片段时出现问题:没有为Set Addresses中的属性Address.SourceID指定映射。具有密钥(PK)的实体在以下情况下不会往返:实体是类型[Model.Address]
感谢您的帮助!
答案 0 :(得分:4)
不要使用条件映射。将您的地址映射到没有SourceID
属性的实体,并从地址实体创建两个派生实体。使用SourceID作为鉴别器(TPH继承 - 它与条件映射的工作方式相同,但您有多个具有不同鉴别器值的实体)。将您的第一个和第二个实体关联到正确的地址子实体。