Entity Framework Table per Hierarchy Inheritance
I am trying to implement table per hierarchy in开发者_C百科heritance with some of my database tables, e.g Address
. I want to derive 3 classes from Address
, these are 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) |
| .. |
| .. |
| .. |
| .. |
| .. |
+------------------------+
The problem is I keep getting errors...
When Address
is concrete, and contains the OwnerCategory
property:
Error 3032: Problem in mapping fragments starting at line 178:Condition member 'addresses.OwnerCategory' with a condition other than 'IsNull=False' is mapped. Either remove the condition on addresses.OwnerCategory or remove it from the mapping.
When Address
is abstract and contains the OwnerCategory
property:
Problem in mapping fragments starting at line 178:Condition member 'addresses.OwnerCategory' with a condition other than 'IsNull=False' is mapped. Either remove the condition on addresses.OwnerCategory or remove it from the mapping.
When Address
is concrete, and does not contain the OwnerCategory
property:
'DtcInvoicer.Database.Address' does not contain a definition for 'OwnerCategory' and no extension method 'OwnerCategory' accepting a first argument of type 'DtcInvoicer.Database.Address' could be found (are you missing a using directive or an assembly reference?)
and
Problem in mapping fragments starting at lines 177, 195:EntityTypes Model.Address, Model.EmployeeAddress are being mapped to the same rows in table addresses. Mapping conditions can be used to distinguish the rows that these types are mapped to.
(I already have the condition set (when OwnerCategory = 0)
When Address
is abstract and does not contain the OwnerCategory
property:
'DtcInvoicer.Database.Address' does not contain a definition for 'OwnerCategory' and no extension method 'OwnerCategory' accepting a first argument of type 'DtcInvoicer.Database.Address' could be found (are you missing a using directive or an assembly reference?)
Any help is appreciated, thanks in advance.
Since you are using OwnerCategory
in the condition for your inheritance it can't be mapped to a property. It also looks like you should also have Address
set to abstract. Make sure you delete the property from your model and amend any code that was using it. The non mapping errors you mention appear to be the standard error when the compiler can't find a specific member so be sure to fix those spots.
精彩评论