gpt4 book ai didi

.net - 通过 LINQ 查询绑定(bind)到 GridView 无法访问部分类属性

转载 作者:行者123 更新时间:2023-12-01 09:38:35 25 4
gpt4 key购买 nike

我已向 Entity Framework 生成的部分类添加了一个部分类。我想添加一个可以绑定(bind)到我的 GridView 的计算字段。但是,当我尝试访问新属性时,我收到一条错误消息,指出这是对 Entity Framework 的限制。

是否有任何变通方法来完成此操作?

最佳答案

如果不查看您的代码,就无法正确诊断您的问题。不过,我有预感……

创建一个分部类并向其添加一个计算属性根本不是问题。将相同的属性绑定(bind)到 GridView 也不是问题,因为 GridView 并不关心,只要该属性是公共(public)的并且访问它本身不会引发异常。

但是...您可能会尝试在查询中使用该属性。 Entity Framework 和其他所有 ORM 都会对此感到厌烦,因为没有将该属性转换为基础数据存储(可能是 SQL Server)。因此,当 EF 尝试构建查询数据库所需的 SQL 时,它会吓坏并说 “我不知道如何将此属性转换为有效的 SQL”

确保您没有在查询中使用该属性,您应该没问题。

更新:

如果您希望实际能够在结果集中使用计算列,那么您有两个基本选择:

1.) 在数据库中创建一个带有计算列的 View ,并将您的实体绑定(bind)到该列而不是原始基础表。您的属性(property)现在将合法地与可以查询的东西相关联。

2.) 确保首先执行查询并带回完整(未过滤的)结果集,然后使用常规 LINQ to Object 来获得所需的结果。像这样的:

var query = from o in Context.Orders
where o.Price > 100
select o;

var orders = from order in query.ToList() // Force query to execute
where order.ComputedColumn == 42
select order;

显然,这比选项一效率低,但根据原始查询可能并不可怕。

关于.net - 通过 LINQ 查询绑定(bind)到 GridView 无法访问部分类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3600307/

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