gpt4 book ai didi

C# Entity Framework 填充部分属性

转载 作者:太空狗 更新时间:2023-10-30 01:26:29 25 4
gpt4 key购买 nike

我有一个名为 Person 的实体,它有一组地址。

我创造了:

public partial class Person
{
public int AddressCount{get{return Addresses.Count;}}
}

这会返回错误:

ObjectContext 实例已被释放,不能再用于需要连接的操作。

我正在返回一个人的集合,我怎么能不这样做呢:

public int AddressCount
{
get
{
using (var c = new Entities())
{
return c.People.Where(s => s.PersonId == PersonId).Single().Addresses.Count;
}
}
}

最佳答案

我发现这可以在不加载集合中所有实体的情况下预先加载“计数”属性:

using (var context = new Entities())
{
var people = (from p in c.People
select new
{
Person = p,
AddressCount = p.Addresses.Count
}).ToList();

foreach (var item in people)
{
item.Person.AddressCount = item.AddressCount;
}
}

当然,缺点是 AddressCount 需要可设置。我想如果您的上下文与实体类在同一个程序集中,您可以给它一个内部 setter 。

您可能不需要那里的 Include("Addresses") - 这值得测试。 编辑 删除了它,因为它不是必需的(并且实际上可能使查询做比它必须做的更多的工作)。

关于C# Entity Framework 填充部分属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857742/

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