我正在尝试使用我的一些数据库表实现每个层次结构的表继承,例如
Address
。我想从Address
派生出3个类,它们是EmployeeAddress
、CustomerAddress
、SupplierAddress
。
+-------------------+------------------------+
| Address |> EmployeeAddress |
+-------------------+------------------------+
| ID | .. |
| OwnerID | EmployeeID |
| OwnerCategory | (condition: where = 0) |
| Street_1 | .. |
| Street_2 | .. |
| City | .. |
| Province | .. |
| PostalCode | .. |
+-------------------+------------------------+
|> CustomerAddress |
+------------------------+
| .. |
| EmployeeID |
| (condition: where = 1) |
| .. |
| .. |
| .. |
| .. |
| .. |
+------------------------+
|> SupplierAddress |
+------------------------+
| .. |
| EmployeeID |
| (condition: where = 2) |
| .. |
| .. |
| .. |
| .. |
| .. |
+------------------------+
问题是我不断收到错误......
当
Address
是 concrete,并且包含 OwnerCategory
属性时:
错误 3032:映射从行开始的片段时出现问题 178:条件成员“addresses.OwnerCategory”具有其他条件 比“IsNull=False”被映射。要么删除条件 地址.OwnerCategory 或将其从映射中删除。
当
Address
是 abstract 并且包含 OwnerCategory
属性时:
从第 178 行开始的映射片段出现问题:条件成员 “addresses.OwnerCategory”的条件不是“IsNull=False” 已映射。删除addresses.OwnerCategory 上的条件或 将其从映射中删除。
当
Address
是具体,并且不包含OwnerCategory
属性时:
“DtcInvoicer.Database.Address”不包含以下定义 “OwnerCategory”并且没有扩展方法“OwnerCategory”接受 可以找到“DtcInvoicer.Database.Address”类型的第一个参数 (您是否缺少 using 指令或程序集引用?)
和
从第 177、195 行开始映射片段时出现问题:EntityTypes Model.Address、Model.EmployeeAddress 被映射到相同的行 在表地址中。可以使用映射条件来区分 这些类型映射到的行。
(我已经设置了条件(当OwnerCategory = 0时)
当
Address
是抽象且不包含OwnerCategory
属性时:
“DtcInvoicer.Database.Address”不包含以下定义 “OwnerCategory”并且没有扩展方法“OwnerCategory”接受 可以找到“DtcInvoicer.Database.Address”类型的第一个参数 (您是否缺少 using 指令或程序集引用?)
感谢任何帮助,提前致谢。
由于您在继承条件中使用
OwnerCategory
,因此它无法映射到属性。看起来您还应该将 Address
设置为抽象。确保从模型中删除该属性并修改使用它的任何代码。当编译器找不到特定成员时,您提到的非映射错误似乎是标准错误,因此请务必修复这些点。
对我来说,错误 3032 的解决方案是将
[NotMapped]
添加到我的鉴别器属性