C# . 您应该始终为数据实现适当的包装器,以便对查询内容和方式进行适当的控制。这是控制性能的唯一方法。但是,如果您不需要自己访问道具,并且与结果相关的唯一内容是数据网格,那么您可以使用匿名类型并将结果作为非通用集合返回,我很确定DataGrid也可以绑定到它。
C# . 您应该始终为数据实现适当的包装器,以便对查询内容和方式进行适当的控制。这是控制性能的唯一方法。但是,如果您不需要自己访问道具,并且与结果相关的唯一内容是数据网格,那么您可以使用匿名类型并将结果作为非通用集合返回,我很确定DataGrid也可以绑定到它。,c#,wpf,entity-framework,linq,lazy-loading,C#,Wpf,Entity Framework,Linq,Lazy Loading,. 您应该始终为数据实现适当的包装器,以便对查询内容和方式进行适当的控制。这是控制性能的唯一方法。但是,如果您不需要自己访问道具,并且与结果相关的唯一内容是数据网格,那么您可以使用匿名类型并将结果作为非通用集合返回,我很确定DataGrid也可以绑定到它。我尝试了一下,出现了一个异常:方法“Skip”只支持LINQ to实体中的排序输入。事实上,尽管它不是强制性的;我只是想指出,不应该返回无界结果集。如果您只想显示所有记录,您可以完全退出分页,或者默认情况下按主键排序(或者,实际上是您喜欢的任何
. 您应该始终为数据实现适当的包装器,以便对查询内容和方式进行适当的控制。这是控制性能的唯一方法。但是,如果您不需要自己访问道具,并且与结果相关的唯一内容是
数据网格
,那么您可以使用匿名类型并将结果作为非通用集合返回,我很确定DataGrid
也可以绑定到它。我尝试了一下,出现了一个异常:方法“Skip”只支持LINQ to实体中的排序输入。事实上,尽管它不是强制性的;我只是想指出,不应该返回无界结果集。如果您只想显示所有记录,您可以完全退出分页,或者默认情况下按主键排序(或者,实际上是您喜欢的任何内容)。我在跳过之前添加了OrderBy,异常消失,但在查询行出现了另一个异常:“至少有一个参数未赋值”。如果我将“cli.Cards.Count”替换为0,异常将消失,我还没有找到解决方案
System.ObjectDisposedException
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
public IEnumerable<Client> GetNonMaterialized()
{
return from n in db.Clients select n;
}
public IEnumerable<Client> GetMaterialized()
{
return (from n in db.Clients select n).ToList();
}
var client = db.Clients.FirstOrDefault(c=> c.Id = someid); //get a client
if (client != null)
{
cardCount = client.Cards.Count;
}
using (var context = GetDbContext())
{
return context.Clients.Select(cli => new YourViewModel
{
Name = cli.FullName,
// Other prop setters go here
CardCount = cli.Cards.Count
}).Skip((page - 1) * pageSize).Take(pageSize).ToList();
}
using (var context = new MyContext())
{
var client = context.Client.Find(clientId);
// Count how many cards the client has
var cardsCount = context.Entry(client)
.Collection(b => b.Cards)
.Query()
.Count();
}