1
7
如果你买得起llblgen许可证,就去拿吧。 我真的不喜欢使用linq查询语法越多(尽管我喜欢与之相关的语言特性,如扩展方法和表达式树)。 起初我和其他人一样喜欢它,但我不确定xyz linq提供程序中的[where employee.name.startswith(“john smit”)]]是在sql语句中完成的还是在linq to objects中完成的(在sql返回所有结果之后),以及[user.roles.contains(role)]]是否能正常工作。落后了一大步。 llblgen可以使删除所有项而不必加载它们变得像
这很简单,我喜欢。您将得到延迟加载,并在默认情况下和/或使用预取api为每个查询设置紧急/深度加载。您可以在无限级别上动态(并且容易地)组合和构造任何过滤器/排序/加载。非常好。 关于llblgen,只有两个问题:第一,这是不是所有公司都愿意付出的代价,尤其是考虑到微软替代品的大肆宣传。第二,命名约定虽然是rdbms理论中的标准)比如谓词,而不是“where”或“filter”和预取,而不是深度加载,甚至是sortexpression,而不是orderby,这些对于第一次使用它的开发人员来说都有点可怕,但是很快你就会明白为了爱他们,给予他们力量和安逸。有关于llblgen 3.0中poco支持的讨论。我不能告诉你因为我不知道。 现在,鉴于我不再在使用llblgen的公司工作,该公司使用linq-to-sql主要是因为它在许多项目中“被证明”没有大的失败(与ef 1不同,ef1在linq-to-sql中甚至缺少linq特性,性能非常差,在高级映射中可能会受到很大限制-这应该是最好的!)。我在这家公司里用过这两个词,而且都讨厌。新项目的决策仍然依赖于sql,并且尽我们所能克服它的局限性。这个网站stackoverflow本身运行在它上面!!!!您可以绕过它来做半poco(当涉及到关联时,仍然需要使用一些与l2s相关的类型)。 我也在家做一些小项目。由于我不再拥有llblgen许可证,我决定学习nhibernate,并与流利的nhibernate和linq一起使用nhibernate。我从中了解到,尼伯纳是非常强大的。它通过一些功能改变了我的工作方式,比如自动更新数据库模式(使用它时我几乎从未接触过d)。linq provider(在nhibernate-contrib项目中)有时非常缺乏,但是nhibernate本身的未发布源代码包含了一个更好的linq provider(还没有尝试过)。nhibernate中的“session”在进行类似于l2s中的datacontext或ef中的objectcontext的web开发时有问题(llblgen不会因为自我跟踪实体而受到影响)。 不过,我和nhibernate之间最大的问题是找到信息的能力。太多的部分应该以某种方式组合在一起,而没有太多的指导可以包括用于映射和查询的高级信息。如果我没有一个朋友(tuna toksoz,@tehlike在twitter上)碰巧是nhibernate项目源代码的提交者,我真的会遇到严重的麻烦。 我学到的寓意是:如果你想要的东西只是工作和一点基本的使用LINQ到SQL或亚音速,如果你想要中间的东西,并且你的生产环境可以负担得起beta.net版本(考虑到GoLive的存在)使用Entity Framework 4.0,如果你想要的东西非常强大并且可以福特的努力学习过程去了nhibernate,最重要的是,如果你能负担得起llblgen,使用它。 |
2
6
看一看 DataObjects.Net : 优势:
缺点:
|
3
4
恕我直言,我倾向于完全不同意你对NHibernate弱点的评价。 我认为创建xml映射非常简单和直观。 添加对nhibernate.dll的引用并创建sessionfactory也是小菜一碟。 大大简化了维护和更改管理。 会话工厂和会话非常容易理解和处理。 总的来说,我认为你是情绪化的,对你的评估不理性。 |
4
3
您是否考虑过使用面向对象的数据库,如 db4o . 虽然我从来没有用过,但当我发现它时,我觉得它很有趣: 它支持linq查询,使用poco,如果我理解正确,数据只存储在一个文件中(不需要安装数据库)。 一些链接: tutorial , forum post |
5
2
勒布尔根 如果你认为你会找到什么东西,勾你所有的盒子,那么你可能会等待很长一段时间。 |
6
2
编写自己的orm 听起来可能很疯狂,但你可以自己写orm。在某个项目中,客户不想使用第三方工具或库,因此,我们最终编写了自己的orm,为我们提供了特定的目标。您可以用属性来修饰对象的类和属性,以便将它们与数据库表和字段映射。拥有所有业务对象的基类,并使用反射对对象执行数据库操作。 这样你就可以建立自己的小ORM来满足你的特定目标。作为参考,它可能有点像这样。
|
7
2
我使用了llblgenpro、nhibernate和一些对象数据库。 我的第一个建议是使用nhibernate和fluentnhibernate来处理映射。 我发现90%与使用nhibernate相关的困难都与xml映射直接相关。当我换上氟尼氨酸时,疼痛消失了。 另外10%的困难只是无知,我不明白。这不是尼伯内特的错。 llblgenpro:我不知道linq支持现在是什么样子,但是在linq被支持之前,编写查询是一个pita。我读了这些文档,得到了它,但我的同事没有,并且没完没了地抱怨预取路径等的复杂性。另外,就像你说的-不是波科。再加上成本,我想这比它的价值要麻烦得多。 如果不是客户机-服务器体系结构,我建议使用db40。我把它用在一个小型的私人项目上,我喜欢它。使用方便。伟大的小对象数据库。 |
8
1
看一看 EntitySpaces . 我不能从我个人的经验中推荐,但它对我的一个同事(他不喜欢sof…)很有用。 |
10
1
对我来说,答案是llblgen pro。除了它的功能外,您还可以获得一个专门的支持团队,该团队关心如何帮助您使项目正常工作,如果您发现一个bug,在大多数情况下,您将在数小时或数天内得到修复。这不能最小化,因为它允许您继续工作,而不是等待发布(几个月?)或者你自己去修理虫子。 |
11
1
你可以看看 Telerik ORM . 我还没有在生产中使用它,但是它是基于一个叫诗人的Java ORM \ODB,几年前我工作的很好。由于它使用了组装增强功能,因此它提供了比您上面拒绝的一些产品更透明的体验。 就纯odb而言 FastObjects by Versant 可能值得一看。 祝你好运-让我们知道你决定怎么做。 |
Gary McGill · 如何在EF中使用/保持POCO对象关系? 12 年前 |