C#学习教程:C#Lambda表达式和NHibernate分享


C#Lambda表达式和NHibernate

我是NHibernate这个伟大世界的新手。 我使用的是2.0.1.GA版。 这是我的问题。 我有一个带有Manufacturer(nvarchar(50))和一个主键ID(int) 。 我的.NET类是:

 public class Car { public virtual int ID { get; set; } public virtual string Manufacturer { get; set; } } 

现在,如果我想要检索梅赛德斯制造的所有汽车,我必须输入:

 using (var session = OpenSession()) { var cars = session .CreateCriteria(typeof(Car)) .Add(Restrictions.Like("Manufacturer", "Mercedes")) .List(); // ... } 

我不喜欢这样的事实,我需要将属性名称指定为字符串:(是否可能有更多的重构友好(这只是一个建议)?

 var ms = session .CreateCriteria() .Add(c => c.Manufacturer, Restrictions.Like("Mercedes") .List(); 

在当前版本(2.0.1.GA)或未来版本中有什么类似的东西?

就像谷歌忍者所说,你可以用NHibernate.Linq做到这一点。 然后查询将是:

session.Linq.Where(c => c.Manufacturer == "Mercedes").ToList()

如果有人在这里结束并使用NH3.0,语法只是有点不同(感谢Michael Mrozek和Mike提出的建议):

session.Query.Where(c => c.Manufacturer == "Mercedes").ToList()

我使用了一个与fluent-nhibernate捆绑在一起的二进制文件,它与2.0GA一起使用(我认为,不确定特定版本)。

如果您还不想将Linq用于NHibernate,那么有两种方法可以获得强类型Criteria查询:

你可以用NHibernate.Linq做到这一点。 它是一种可用的forms,但仍然是一种完整的方式。 它目前居住在nhcontrib内部,获得它的唯一方法是将其从svn中取出来https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Linq/

看看这个问题 。 有人有同样的担心,从我可以收集到,NHibernate.Linq还活着。

你可以在这里找到你想要的东西(博客条目)或这里(谷歌存储库)

上述就是C#学习教程:C#Lambda表达式和NHibernate分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960217.html

发表评论

邮箱地址不会被公开。 必填项已用*标注