gpt4 book ai didi

c# - 为什么此 NHibernate Linq 查询会尝试执行插入语句?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:24 27 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题,我想知道是否有人以前见过。作为存储库中我的 Save() 方法的一部分,它将搜索并按名称查找每个关联的标签。那里有一行看起来像这样。

var tagRepo = (from t in tagRepository.Query() where t.Name == tag.Name select t).SingleOrDefault();

一旦该行执行,它就会抛出这个异常

GenericADOException: could not insert: [Core.Domain.Model.Tag][SQL: INSERT INTO [Tag] (Name) VALUES (?); select SCOPE_IDENTITY()]]

据我所知或了解此处发生的情况,Linq 查询不应执行插入语句。有什么想法吗?

谢谢。

最佳答案

我刚刚修复了它,所以我想我会分享答案。有问题的查询在另一个 session 中。所以有这些行

using (var session = GetSession())
using (var transaction = session.BeginTransaction())

创建 session 和新事务。之后调用 .Query() 实际上就是这样做的。

return GetSession().Linq<T>().AsQueryable();

所以它试图在我现有的 session 和事务中获取另一个 session 。我将查询和更新移动到 GetSession() 和 BeginTransaction() 之上,一切正常。

关于c# - 为什么此 NHibernate Linq 查询会尝试执行插入语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2054443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com