¿Cuáles son las ventajas/desventajas de cada método?Entity Framework 4, heredando vs extendiendo?
Sé que he leído en alguna parte, ya sea en un libro o en este sitio por qué utilizar la herencia de tablas es horrible para Entity Framework 4.
Por ejemplo, por qué no hacer una tabla que tiene una entityId, DateCreated, DateModified y luego tienen todas las otras clases heredan eso en el marco de la entidad? Entonces mis tablas para todas las demás entidades no necesitan tener esas columnas. Entonces puedo hacer que una clase persona herede esa clase base, y luego una persona específica hereda a la persona.
No estoy seguro de las ventajas de esto, sin embargo sí que escribir una secuencia de comandos SQL más pequeño para generar la base de datos ...
Las desventajas son que veo que hace la consulta/visualización de los datos directamente en SQL un gran dolor en el culo (toda la información relevante está rota en tantas tablas), y también le pregunté a mi amigo quien dijo:
"Lo más importante que me queda es el hecho de que no me gustaría que mi base de datos confío en la estructura de herencia actual de mi aplicación. Si, por alguna razón, quisiera cambiar el diseño de mi aplicación en términos de herencia, no importaría porque mis datos no depender de mi diseño de sistema actual. Pienso en el almacenamiento de datos simplemente como eso: almacenamiento. la base de datos se normaliza de acuerdo con el diseño adecuado de la base de datos, pero la herencia es una opción programática de desarrollo de aplicaciones, no de almacenamiento de datos. eso solo me impediría usarlo. la herencia es algo muy difícil de hacer correctamente cuando se trata de diseñar una aplicación. es mucho más fácil cambiar el código de la aplicación que cambiar y migrar los datos de la base de datos cuando la mayoría de los desarrolladores menos experimentados se acercan a un problema con herencia. Yo también lo hice cuando comencé a desarrollar. lógicamente tiene sentido. sin embargo una vez desarrollando desde hace mucho tiempo se aprende que la delegación es realmente el mejor camino a seguir (servicios de los servicios en el caso de SOA llamar) y que los servicios de un solo uso proporcionan mucha más reutilización de herencia."
Qué también tiene sentido para mí.
Así
1) En general, ¿cuáles son las ventajas/desventajas de la herencia vs extendiéndose
2) En mi ejemplo específico anterior, lo que sería más apropiado?
3) Si mi ejemplo es malo para uno o ambos, ¿cuál es un buen ejemplo? para usar la herencia y para usar la extensión?
He usado ambas antes, pero como estoy lejos de estar sazonado, todavía no estoy seguro de cómo manejar todas las situaciones.
10 Votos, 8 favoritos, más de cien vistas y nadie puede expandir? = (.
Gracias por la respuesta BP, ¿hay alguna posibilidad de que pueda ampliar esto más? ¿O no hay otros pros y contras? Entonces, ¿cuál sería un buen ejemplo para usar la herencia? – SventoryMang
En realidad, .OfType se filtra en el lado de SQL, IIRC –