小编Ran*_*den的帖子

FluentNHibernate和NHibernate的"按代码映射"之间的区别

我来自ORM工具的实体框架和LLBL背景.

我被要求建立一个基于NHibernate的新系统.我从来没有这样做过,所以我带着新鲜的眼睛来看它.

使用Fluent NHibernate进行映射和NHibernate中的"按代码映射"有什么区别?有偏好吗?

nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping

30
推荐指数
2
解决办法
1万
查看次数

用NHibernate对连续全名进行模糊搜索

我试图将以下SQL转换为NHibernate:

SELECT * FROM dbo.Customer
WHERE FirstName + ' ' + LastName LIKE '%' + 'bob smith' + '%'
Run Code Online (Sandbox Code Playgroud)

我试图做这样的事情,但它不起作用:

name = "%" + name + "%";

var customers = _session.QueryOver<Customer>()
            .Where(NHibernate.Criterion.Restrictions.On<Customer>(c => c.FirstName + ' ' + c.LastName).IsLike(name))
            .List();
Run Code Online (Sandbox Code Playgroud)

我基本上要做的是能够在文本框中搜索客户名称,其示例值为"bob smith",并使用上面SQL中的LIKE表达式搜索数据库.

如果我要错误地搜索FirstName和LastName列,请帮我一个替代方案,但上面的SQL查询可以得到我需要的东西.

更新2个解决方案:

所以我现在找到了解决这个问题的两种方法.一种是使用Criteria API.以下帖子的答案非常有用:https://stackoverflow.com/a/2937100/670028

我找到了另一个解决方案,感谢我的一位有用的同事建议使用LINQ投影和匿名类型.这是使用LINQ的解决方案:

var customers = session.Query<Customer>()
    .Select( x => new { FullName = x.FirstName + " " + x.LastName, Customer = x } )
    .Where( x => x.FullName.Contains( "Bob Smith" ) ) …
Run Code Online (Sandbox Code Playgroud)

c# sql linq nhibernate fuzzy-search

6
推荐指数
1
解决办法
2126
查看次数