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

时间:2011-09-01 15:25:33

标签: c# wpf entity-framework

我正在尝试使用我的一些数据库表来实现每个层次结构继承的表,例如Address。我想从Address派生出3个类,分别是EmployeeAddressCustomerAddressSupplierAddress

+-------------------+------------------------+
| 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 具体时,并包含OwnerCategory属性:

  

错误3032:从行开始映射片段时出现问题   178:条件成员'addresses.OwnerCategory',条件为other   比'IsNull = False'被映射。要么删除条件   addresses.OwnerCategory或从映射中删除它。

Address 抽象且包含OwnerCategory属性时:

  

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

Address 具体时,包含OwnerCategory属性:

  

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

  

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

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

Address 抽象包含OwnerCategory属性时:

  

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

提前感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

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