首页 文章

从旧的DataLayer到LINQ再到SQL / Entity Framework

提问于
浏览
1

在SO和Google上有一些“我应该选择这个或那个”问题,还有很多比较LINQ2SQL和LINQ2E . 我已经看到了缺点,差异,缺点,优点,局限等 .

我不能说我是专家,但如果您遇到这种情况,我想知道“你会做什么”以及为什么 .

我必须在最近迁移到3.5的“旧”2.0应用程序中添加内容(它开箱即用,有一些警告在这里和那里) . 因为我必须添加新东西,我想开始使用LINQ(2SQL或实体) .

我是一个快速,易于使用的解决方案......如果你不想做任何太奇怪的事情 . 如果你来自旧的"Recordsets",表之间的自然1..1关系就是天赐之物 . 同样不错的是能够拥有不同的datacontexts,具体取决于您要使用的表集 .

随着事物数量和新功能的增长,我认为后者无法处理Many2Many关系而无需求助于hack .

这就是实体框架的用武之地 . But ,你不能像Linq2Sql和_545357那样拥有多个"small models",除非你牺牲了some的东西和一些other的东西 .

该数据库现在有218个表,并没有显着增长 . 不时有一张新 table ,但我们不是每天都在谈论10张 table . 我想说,在接下来的一年里,我们将有一个“艰难时期”达到250桌 .

are 很多2很多关系,有些只有PK / PK,有些有聚合(实体框架没有magically handle,但它可以处理它们 . 这就是为什么我不想从Linq2SQL开始,除非hack是"ok"并且是一种可接受的方法 .

你会怎么做?妥协N..N关系(知道即使存在黑客攻击,也不会像集成解决方案那样优雅和"supported")并使用Linq2SQL及其"have many small datacontexts that you create and destroy"哲学,或者另一方面继续使用Entity Framework,有一个巨大的数据模型与所有的表或关系,并从那里开始?即使创建多个模型也有缺点(参见那里的链接)并且有一个巨型模型有缺点 .

还有关于微软“放弃”Linq2SQL的非官方评论(我怀疑,但你永远不知道) . 我们的数据库是MSSQL,我看不到很快就会改变 .

任何有关该主题的经验将不胜感激 .

2 回答

  • 1

    在你的情况下我会怎么做?我会使用NHibernate,可能还有Castle Active Record .

    为什么?因为该解决方案为“真实世界”场景提供了最佳支持,尤其是您提到的场景 . NHibernate与您的项目一起扩展,并不限制您 . 它基本上是免费的 . NHibernate是一个非常成熟,经过良好测试的解决方案 .

    你没有提到NHibernate是你正在研究的东西,所以我不确定在这方面什么不吸引你(看起来你读得够多,你会遇到这个选项) .

    LinqToSql / EntityFramework不提供NHibernate所能提供的很多东西 .

  • 0

    我正在处理Linq2SQL中的多对多关系 .

    请参阅here获取neato扩展方法以解决您的痛苦!

    就个人而言,我发现使用一个单片模型是最容易处理的 .

相关问题