标签: linq-to-nhibernate

NHibernate:如何忽略缓存并直接转到数据库?

考虑一个典型的NHibernate上下文类.

public class SampleContext : NHibernateContext
{
    public SampleContext(ISession session)
        : base(session)
    { }

    public IQueryable<Person> People
    {
        get { return Session.Linq<Person>(); }
    }

    public Person GetPerson(int id)
    {
        get { return Session.Linq<Person>().SingleOrDefault(p => p.ID == id); }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 我怎样才能重写GetPerson方法来忽略缓存并直接从数据库中检索数据?

nhibernate caching linq-to-nhibernate

3
推荐指数
1
解决办法
1942
查看次数

NHibernate Linq提供者问题

任何人都可以回答我的不同之处

Session.Query
Session.Linq和
Session.QueryOver

我真正感兴趣的是:
未来版本将支持哪些内容.
我应该在干净的项目中开始使用什么.

请告诉我你对这三个人的看法......

谢谢你,佐尔坦

nhibernate linq-to-nhibernate

3
推荐指数
1
解决办法
426
查看次数

是否有Linq到Nhibernate进行无状态会话?

我正在使用常规会话通过linq从数据库加载一些项目.问题是它会缓存实体,并且内存负载会不必要地增加.有没有办法用无状态会话替换会话而不在客户端代码中引入许多更改?

nhibernate linq-to-nhibernate

3
推荐指数
1
解决办法
1572
查看次数

适用于Linq的流利NHibernate或NHibernate?

流利的NHibernate或NHibernate,我们应该更喜欢linq支持哪一个?

c# nhibernate fluent-nhibernate linq-to-nhibernate

3
推荐指数
1
解决办法
2188
查看次数

NHibernate .Query返回陈旧数据

这是我的单元测试(虽然毫无意义,但证明了一点

Config entity = new Config("key", "value");

Session.SaveOrUpdate(entity);

Config config = Session.Query<Config>().SingleOrDefault(c => c.Key == "key");
Assert.IsNotNull(config);
Run Code Online (Sandbox Code Playgroud)

它失败了...但是我不认为应该这样做(请注意,如果我刷新它,它不会失败,但这不是我想要的行为)

如果我用这个替换查询行

Config config = Session.Get<Config>("key");
Run Code Online (Sandbox Code Playgroud)

...通过

它绝对不会刷新(我什至将FlushMode设置为从不只是为了确定)。为什么一个人成功,另一个人不成功?这似乎不正确-我非常希望linq能够成功

c# nhibernate linq-to-nhibernate

3
推荐指数
1
解决办法
765
查看次数

编译的LINQ查询-NHibernate

查看此链接可以看到,可以使用编译后的查询来提高Linq to SQL应用程序的性能(我已经在Entity Framework中看到了其他示例):

http://blog.linqexchange.com/index.php/how-to-use-compiled-queries-in-linq-to-sql-for-high-demand-asp-net-websites/

这需要一个继承DataContext的参数-我认为NHIbernate没有,但这是这个问题的重点。

我看了这些链接:

https://nhibernate.jira.com/browse/NH-2389

编译NHibernate Linq表达式

但我看不到最新的确切答案。

如果有人有答案,我很想听听他们:)

linq nhibernate linq-to-nhibernate

3
推荐指数
1
解决办法
1324
查看次数

如何创建Expression&lt;Func&lt;T, TRelated&gt;&gt;的集合?

我有一个具有以下方法的存储库:

IEnumerable<T> FindAll<TRelated>(Specification<T> specification,
                                 Expression<Func<T, TRelated>> fetchExpression);
Run Code Online (Sandbox Code Playgroud)

我需要传递多个表达式。我正在考虑将签名更改为:

IEnumerable<T> FindAll<TRelated>(Specification<T> specification, 
                                 IEnumerable<Expression<Func<T, TRelated>>> fetchExpression);
Run Code Online (Sandbox Code Playgroud)
  1. 这可能吗?
  2. 例如,如何创建一个表达式数组以传递到此方法中?

目前我正在从服务层调用该方法,如下所示:

var products = productRepository.FindAll(specification,p => p.Variants);
Run Code Online (Sandbox Code Playgroud)

但我想通过p => p.Variantsp => p.Reviews例如。然后在存储库中,我想迭代表达式并将它们添加到查询中。

有关我为什么这样做的一些背景信息,请参阅 Ben Foster 的有关使用 NHibernate 进行预加载的博客文章。

linq specification-pattern linq-to-nhibernate linq-expressions

3
推荐指数
1
解决办法
2294
查看次数

使用linq进行休眠时未实现该方法或操作

我正在尝试使用 linq 来 nhibernate 3,我做了以下 linq 查询

 var a = (from c in Session.Query<ChoiceValue>()
                 join Specific in
                     (
                         (from choicevaluelocale in Session.Query<ChoiceValueLocale>()
                          where
                            choicevaluelocale.UICulture == "en-GB"
                          select new
                          {
                              choicevaluelocale.ChoiceValue.ChoiceGroup.ChoiceGroupName,
                              choicevaluelocale.ChoiceValue.ChoiceValueId,
                              choicevaluelocale.DisplayName,
                              choicevaluelocale.Description
                          }))
                       on new { c.ChoiceGroup.ChoiceGroupName, c.ChoiceValueId }
                   equals new { Specific.ChoiceGroupName, ChoiceValueId = (Int32)Specific.ChoiceValueId } into Specific_join
                 from Specific in Specific_join.DefaultIfEmpty()
                 select new
                 {
                     c.ChoiceGroup.ChoiceGroupName,
                     ChoiceValueId = (Int32?)c.ChoiceValueId,
                     SpecificValueDisplayName = Specific.DisplayName,
                     SpecificValueDescription = Specific.Description,

                 }).ToList();
Run Code Online (Sandbox Code Playgroud)

但是在 c# 中的 n-hibernate 上执行它时,我遇到了以下错误

The method or operation is not implemented …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-nhibernate

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

Linq - 如何在列表的最大元素上应用where子句

  • 我有一个"人"列表
  • 每个人都有一个"类别"列表
  • Categoty有两个属性:Date和Value

我想选择Person列表,其中最后一个类别等于"B".但我不知道如何在Linq语法中编写"where子句".

我的"人"结构是:

<person>
    <id>200</id>
    <name>Peter</name>
    <age>25</age>
    <categories>
        <category>
            <date>2012-05-01<date>
            <value>A</value>
        </category>
        <category>
            <date>2013-01-01<date>
            <value>B</value>
        </category>
        <category>
            <date>2013-02-01<date>
            <value>C</value>
        </category>
    </categories>
</person>
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-nhibernate

3
推荐指数
1
解决办法
1228
查看次数

如何使用linq-to-nhibernate查询继承的类?

假设我有课程Animal,Cat并且Dog.CatDog继承自Animal.考虑以下代码:

var query = from animal in session.Linq<Animal>()
            where 
            animal.Color == "White"
            select animal;
Run Code Online (Sandbox Code Playgroud)

如何向上述查询添加条件以查询实体类型?比如像animal.Type == typeof(Cat).

nhibernate linq-to-nhibernate

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