¿Codesmith es una herramienta ORM viable (o debería seguir con un ORM verdadero)? [cerrado]

StackOverflow https://stackoverflow.com/questions/583232

  •  06-09-2019
  •  | 
  •  

Pregunta

Estoy comprando una herramienta ORM.Estoy angustiado por la compra de CodeSmith (que actualmente está disponible con un descuento sustancial) versus una herramienta ORM.

LINQ to SQL está fuera de mi lista;SubSonic 2.x está fuera de la lista (no quiero invertir en ese callejón sin salida sabiendo que SubSonic 3.0 está por llegar.NHibernate parece excesivo al igual que LLBLGEN.Solo he evaluado brevemente EF, pero no obtengo rápidamente una sensación cálida y confusa.

¿Estoy loco pensando que CodeSmith es una alternativa racional a los ORM disponibles en el mercado?¿CodeSmith se amortizará de otras formas?

Tenga en cuenta que no estoy relacionado de ninguna manera con ningún proveedor y que esta no es una opción barata, ¡así que pregunte solo por generar ruido en el producto!Estoy buscando consejos y opiniones honestos sobre CodeSmith como herramienta ORM (con sus plantillas proporcionadas o disponibles en la comunidad).

¿Fue útil?

Solución

De hecho, Hibernate es una buena herramienta ORM. Pero se detiene allí!

capacidades Código Smith puede ser algo más que un equipo de mapeo relacional! Utilizo código smith para generar algunas formas de interfaz de usuario, de negocios capas (plantillas), capas de acceso a datos, patrones, y así sucesivamente. Pero para trabajar con código de Smith, es posible que tenga una buena experiencia con el diseño del sistema o utilizar sus plantillas que no me gusta de usar, pero me gusta como ejemplo.

Código enfoque de Smith tiene un inconveniente especial; usted tiene que diseñar su sistema teniendo en cuenta la aplicación de base de datos en primer lugar. Hoy en día, en el enfoque de análisis de objetos, personas de éxito en la implementación de la lógica de negocio y entidades justo antes de cualquier aplicación de base de datos - se olvidan de este

.

Decisión es difícil; He leído constantemente nombres importantes como Scott W. Ambler, Kent Beck, Robert C. Martin y los de la serie pragmáticos programadores que recomienda la herramienta ORM para acelerar el desarrollo. Ellos dijeron que los desarrolladores de herramientas ORM se ocupan de todas las cuestiones de base de datos (fondo común, conexiones, Específicos de proveedores de bases de datos, etc.). Por eso, cuando tenemos que diseñar capas de acceso a datos que tenemos que considerar todos estos aspectos también.

Creo que estas herramientas ORM vienen junto con una sobrecarga. No sé todavía cómo estas herramientas comportamiento en proyectos de bajo presupuesto (no me refiero buenos servidores de alojamiento o cualquier tipo de recursos compartidos). He visto a los desarrolladores sin experiencia que no toman esto en cuenta, ya que tratar de evangelizar a sus herramientas queridos. Pero en proyectos de Java, Hibernate es ya una herramienta muy extendida y conocida. No tengo ninguna duda los grandes proyectos se ha entregado con esta tecnología, pero he visto a nadie y otra vez los desarrolladores de Java pueden necesitar nosotros (NET) enseñará cómo construir grandes soluciones. (Lo siento, tenemos que admitir.)

La única cosa que recomendaría es tener en cuenta su contexto. ¿Estás haciendo un nuevo sistema? Es necesario trabajar en el patrón? ¿Alguna vez se trate de considerar este tipo de herramientas de generación de código y ORM en total?

Yo prefiero código de Smith porque generar soluciones enteras a la vez, no sólo la capa de acceso de datos. La generación de código es muy importante y no es para menos que Microsoft ha imitado código de enfoque Smith en studio.net visual 2008 y así sucesivamente.

Buena suerte

Otros consejos

Code Smith no es un ORM, es solo un IDE generador de código.

Puede generar un DAL usando Code Smith basado en su base de datos, pero eso anularía (uno de) los propósitos de usar un ORM, que es básicamente que genera el DAL dinámicamente para que no tenga que escribir el código.

Si realmente estás tratando de comparar los dos, entonces tal vez puedas obtener algún beneficio usando Code Smith porque tendrías control absoluto sobre el código que se genera, pero no estoy seguro de que ese beneficio supere el inconveniente de lo que podría convertirse. Resultó pasar meses escribiendo las plantillas de Code Smith para generar un DAL basado en su base de datos.

Y luego debe considerar lo que sucede cuando realiza un cambio en su base de datos; lo más probable es que tenga que ejecutar Code Smith y compilar cada vez que lo haga.Un buen ORM le permitirá configurar los cambios de su base de datos en el esquema y luego se generará dinámicamente para que no tenga que preocuparse (tanto) por realizar cambios en la base de datos.

NHibernate es el camino a seguir. Es un ORM de nivel empresarial. Y con la auto-configuración basada en la convención de la FluentNHibernate biblioteca, la configuración es ridículamente simple si se adhieren a una sola convención (se llega a especificar los convenios, o hay valores por defecto).

Con NHibernate, sus objetos de dominio son objetos de C # puros. No hay clases base extraños. No hay archivos codegenned que necesitan refrescarse cada vez que deciden hacer un cambio.

Yo uso diario y netTiers encanta. Documentación para que chupa, pero ha sido un protector tal vez para mí en la oficina. Mucha gente quejarse de la cantidad de código que produce, pero por lo que he visto, el código que crea es mucho más rápido que la codificación de gran parte de ella la mano. También genera todos los procedimientos almacenados que se necesitan para sus cosas básicas CRUD. Los métodos de acceso que produce son bastante impresionante, así, conseguir por todas sus claves únicas, claves foráneas y claves primarias.

Creo que el uso de CodeSmith es viable. Sin embargo, usted debe buscar en los marcos que lo utilizan. netos Niveles es un marco de aplicación que puede servir de base para noquear a un buen DAL.

¿Por qué sería algo así como LLBLGen ser excesiva? La usamos en el trabajo, y después de una curva de aprendizaje un poco elevados, es muy agradable :). Al menos debe dar eso y nhibernate intentarlo.

No está seguro de lo que esto tiene que ver con CodeSmith sin embargo, eso es un CodeGenerator, se podría rodar su propia ORM, pero dado que ya hay buenos por ahí, no creo que vale la pena el tiempo y esfuerzo a menos que desee hacerlo con fines de aprendizaje.

Vaya con netTiers y .netMVP. NetTiers es un muy buen DAL y .netMVP es un marco que acaba de lanzar para apoyar la abstracción en el nivel de interfaz de usuario. :)

http://community.codesmithtools.com/CodeSmith/m/templates /42499.aspx

He utilizado LLBLGen hace varios años. Espero que lo que he visto ha sido corregido. Nos fijamos en el SQL en línea que fue producido y vimos, para la selección de una fila de datos con la clave principal en el pasado:

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

En realidad, distinto? Siempre rogué que hacer procsos tienda en lugar, pero lo derribado por el líder del proyecto. No estoy seguro de a qué hora fue salvado por la escritura de código ineficiente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top