gpt4 book ai didi

c# - Mysql Linq 已经有一个与此连接关联的打开的 DataReader,必须先将其关闭

转载 作者:行者123 更新时间:2023-11-29 07:06:28 24 4
gpt4 key购买 nike

嵌套 SELECT 时会发生异常。如果您注释掉“照片”、“生日”和“住所”属性,则一切正常。如何重写查询以使其正常工作?

  var predicate = PredicateBuilder.True<Persons>();
var query = this._entity.Persons.AsExpandable();

#region
if (!String.IsNullOrEmpty(currentPerson.PersonName))
{
predicate = predicate.And(i => i.PersonName.Contains(currentPerson.PersonName.Trim()));
}

if (!String.IsNullOrEmpty(currentPerson.PersonLastName))
{
predicate = predicate.And(i => i.PersonLastName.Contains(currentPerson.PersonLastName.Trim()));
}

if (!String.IsNullOrEmpty(currentPerson.PersonPatronymic))
{
predicate = predicate.And(i => i.PersonPatronymic.Contains(currentPerson.PersonPatronymic.Trim()));
}
...........

var result = query.Where(predicate).AsEnumerable().Select(o => new POCO.PersonResult
{
Id = (int)o.Id,
Photo = o.persons_photos.Select(s => s.PersonFrontView).FirstOrDefault(),
FullName = String.Format("{0} {1} {2}", o.PersonLastName, o.PersonName, o.PersonPatronymic),
Birthday = o.persons_passport_data.Select(s => s.PersonBirthday).FirstOrDefault().ToString()
Residence = o.persons_registration
.Select(s =>
String.Join(", ", ListModel.GetCountry(s.PersonCountryId),
ListModel.GetRegion(s.PersonRegionId),
ListModel.GetCity(s.PersonCityId))).FirstOrDefault()
}).ToList();

最佳答案

看起来 MySql 连接器不支持 MARS(多个事件结果集),并且您的 LINQ to Objects 查询(在 AsEnumerable() 调用之后)涉及延迟加载( o.persons_photoso.persons_passport_datao.persons_registration 导航属性),其中当主数据读取器仍在执行时需要额外的读取器。

最好的办法是通过删除 AsEnumerable() 让整个查询作为单个 SQL 查询执行。调用,但由于投影使用的是不受支持的方法,我想唯一的选择是替换 AsEnumerable()调用 ToList() ,这将确保主数据读取器在延迟加载导航属性时完成。

您可以尝试的另一件事是通过添加几个 Include 来急切加载它们(假设您正在使用 EF)来电:

var query = this._entity.Persons
.Include(o => o.persons_photos)
.Include(o => o.persons_passport_data)
.Include(o => o.persons_registration)
.AsExpandable();

// the rest (same as yours) ...

关于c# - Mysql Linq 已经有一个与此连接关联的打开的 DataReader,必须先将其关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41444524/

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