每个层次结构继承的实体框架表

Saa*_*an. 6 c# wpf entity-framework

我试图用我的一些数据库表实现每个层次结构继承的表,例如Address.我想获得3班从Address,这些都是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) |
                    | ..                     |
                    | ..                     |
                    | ..                     |
                    | ..                     | 
                    | ..                     |
                    +------------------------+
Run Code Online (Sandbox Code Playgroud)

问题是我一直在犯错误......

如果Address具体的,并包含OwnerCategory属性:

错误3032:从第178行开始映射片段时出现问题:映射条件成员'addresses.OwnerCategory',条件不是'IsNull = False'.删除addresses.OwnerCategory上的条件或从映射中删除它.

什么时候Address抽象的并且包含OwnerCategory属性:

从第178行开始映射片段的问题:映射了条件成员'addresses.OwnerCategory',其条件不是'IsNull = False'.删除addresses.OwnerCategory上的条件或从映射中删除它.

如果Address具体的,而并不包含OwnerCategory属性:

'DtcInvoicer.Database.Address'不包含'OwnerCategory'的定义,并且没有可以找到接受类型'DtcInvoicer.Database.Address'的第一个参数的扩展方法'OwnerCategory'(您是否缺少using指令或程序集引用?)

从第177,195行开始映射片段的问题:EntityTypes Model.Address,Model.EmployeeAddress被映射到表地址中的相同行.映射条件可用于区分这些类型映射到的行.

(我已经设置了条件(当OwnerCategory = 0时)

什么时候Address抽象的并且包含OwnerCategory属性:

'DtcInvoicer.Database.Address'不包含'OwnerCategory'的定义,并且没有可以找到接受类型'DtcInvoicer.Database.Address'的第一个参数的扩展方法'OwnerCategory'(您是否缺少using指令或程序集引用?)

任何帮助表示赞赏,提前谢谢.

小智 8

由于您OwnerCategory在继承的条件下使用它,因此无法映射到属性.看起来你也应该Address设置为抽象.确保从模型中删除该属性并修改使用它的任何代码.当编译器找不到特定成员时,您提到的非映射错误似乎是标准错误,因此请务必修复这些错误.