2011-09-01 25 views
6

Estoy tratando de implementar tabla por herencia de jerarquía con algunas de las tablas de mi base de datos, por ejemplo Address. Quiero derivar 3 clases de Address, estas son EmployeeAddress, CustomerAddress, SupplierAddress.Entity Framework Table por herencia Jerarquía

+-------------------+------------------------+ 
| 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) | 
        | ..      | 
        | ..      | 
        | ..      | 
        | ..      | 
        | ..      | 
        +------------------------+ 

El problema es que dan errores ...

Cuando Address es concreto, y contiene la propiedad OwnerCategory:

Error 3032: Problema en fragmentos de mapeo a partir de la línea 178: Condición miembro 'direcciones.Categoría del propietario' con una condición diferente que 'IsNull = False' se asigna. Elimine la condición en address.OwnerCategory o elimínela de la asignación.

Cuando Address es abstracto y contiene el OwnerCategory propiedad:

Problema en fragmentos de mapeo a partir de la línea 178: Condición miembro 'addresses.OwnerCategory' con una condición distinta de 'IsNull = False ' está asignado. Elimine la condición en addresses.OwnerCategory o elimínela de la asignación.

Cuando Address es concreto, y no contienen el OwnerCategory propiedad:

'DtcInvoicer.Database.Address' no contiene una definición para 'OwnerCategory' y ningún método de extensión 'OwnerCategory' aceptando un primer argumento de tipo 'DtcInvoicer.Database.Address' se puede encontrar (¿falta una directiva using o una referencia de ensamblado?)

y

Problema en fragmentos de mapeo a partir de las líneas 177, 195: EntityTypes Model.Address, Model.EmployeeAddress están siendo asignada a las mismas filas en direcciones de la tabla. Las condiciones de asignación se pueden usar para distinguir las filas a las que se asignan estos tipos.

(que ya tienen la condición de establecimiento (cuando OwnerCategory = 0)

Cuando Address es abstracta y no contienen el OwnerCategory propiedad:

'DtcInvoicer.Database.La dirección 'no contiene una definición para ' OwnerCategory 'y no hay ningún método de extensión' OwnerCategory 'que acepte un primer argumento de tipo' DtcInvoicer.Database.Address ' (¿falta una directiva using o una referencia de ensamblado?)

Se agradece cualquier ayuda, gracias de antemano.

Respuesta

7

Dado que está utilizando OwnerCategory en la condición de su herencia, no se puede asignar a una propiedad. También parece que también debe tener Address en abstracto. Asegúrese de eliminar la propiedad de su modelo y modificar cualquier código que la estaba usando. Los errores de no asignación que mencionas parecen ser el error estándar cuando el compilador no puede encontrar un miembro específico, así que asegúrate de corregirlos.

+0

Oye, intenté eliminar la propiedad 'OwnerCateogry', y establecí' Address' en abstract, como mencioné anteriormente. Obtengo el error que mencioné al final. –

+1

Correcto, parece que algún otro código estaba usando 'OwnerCategory', tendrá que modificar ese código para no usar' OwnerCategory'. – scmccart

+0

Oye, parece que tienes razón. Parece estar funcionando ahora. Creo que lo estaba usando en otro lugar. Gracias de nuevo. –

Cuestiones relacionadas