and*_*ndy 9 entity-framework rad linq-to-sql
当Linq-to-Sql首次发布时,我对于不需要真正的多层架构的中小型项目使用了很多.
在我工作的地方,我们现在几乎只使用NHibernate进行真正的域驱动开发.
我正在研究一个小的临时(可能是一年,可能更少)的中间件组件,NHibernate在配置方面感觉有些过度,并使实体保持最新.特别是因为我无法控制数据库,它有时会发生变化,而且它有点"遗留".
最近对DB进行了一些更改,并且NHibernate映射不是很完整.
我认为删除我所拥有的IRepository实现并将其替换为Linq-to-Sql实现可能更容易.然后我可以使用lambdas进行简单的查询,只需拖放表格即可.
在这种情况下,Linq-to-Sql的RAD元素是有意义的.但它本质上是旧技术.我应该不用吗?我从未使用过实体框架.我应该使用它,它是否容易和快速使用?
干杯
是否仍然可以使用Linq-to-sql?
是.可以使用任何技术,使您能够及时交付产品,具有所需的功能和质量.您仍然可以使用ASP,ADO,VB6找到项目.微软技术在许多国际公司中非常困难的一个原因是它们的产品寿命很短.Linq-to-sql在市场上销售的时间不到2年,并被微软弃用,但公司/社区对此提出了异议并且微软改变了他们的策略.Linq-to-sql没有新功能,但仍然支持它并且是一个功能齐全的技术.
Linq-to-sql还是EF会解决你的问题吗?
这取决于.也许是的,也许不是.不要相信有关RAD的营销公告.有时我觉得人们认为RAD是关于设计师的.不.支持RAD的工具是关于定义良好的API,易于理解,易于使用且不包含意外行为(最少惊喜的原则) - 您将使用API快速构建应用程序原型,但仍需要理解和实践.当您将其与手动执行整个数据访问进行比较时,NHibernate的映射仍然是原型.我们甚至可以遵循良好框架的基本规则:简单的事情很容易做,而且很难做到.这是NHibernate比EF或Linq-to-s更好地完成的事情.
如果您了解NHibernate,但您对EF或Linq-to-sql没有任何实际经验,那么您可以确定Linq-to-sql或EF都不会提高您在使用它的前一个或两个项目中的工作效率.如果您没有太多使用NHibernate的经验,那么更改为EF或Linq-to-sql可能不会导致暂时失去生产力.
我也不认为EF或Linq-to-sql通常会在数据库更改的情况下帮助您.我记得Linq-to-sql设计器根本没有更新映射功能,因此它经常在没有设计器的情况下使用,所以你仍然必须手动修改映射.EF的数据库更新模型在这里很有帮助,但它不是灵丹妙药.某些更新可能需要手动修改EDMX文件(巨大的XML).
最后要知道NHibernate的映射功能要强大得多,特别是在使用旧数据库时.Linq-to-sql的映射功能非常有限,它主要是1:1的表映射到类,但有一些例外(基本的TPH继承).EF提供了更复杂的映射功能,但它不知何故需要正确设计数据库.