我遇到一个非常奇怪的问题,我想知道是否有人见过。我在存储库中作为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查询不应该执行insert语句。有什么想法吗?
感谢。
答案 0 :(得分:2)
我刚修好了所以我想我会分享答案。有问题的查询是在另一个会话中。所以有这些线
using (var session = GetSession())
using (var transaction = session.BeginTransaction())
创建会话和新事务。之后调用.Query()实际执行此操作。
return GetSession().Linq<T>().AsQueryable();
所以它试图在我现有的会话和事务中获得另一个会话。我将查询和更新移到GetSession()和BeginTransaction()之上,一切正常。