SIv*_*gvi 3 .net linq asp.net entity-framework
我已经为实体框架生成的部分添加了一个部分类.我想添加一个可以绑定到GridView的计算字段.但是,当我尝试访问新属性时,我收到一条错误消息,指出这是对Entity Framework的限制.
有没有工作要做到这一点?
如果没有看到您的代码,就无法正确诊断您的问题.但是,我有预感......
创建一个局部类并向其添加一个计算属性根本不是问题.将相同的属性绑定到GridView也不是问题,因为只要属性是公共的并且访问它本身不会引发异常,GridView就不关心.
但是......您可能正在尝试在查询中使用该属性.实体框架和其他所有ORM都会在这个问题上呕吐,因为没有将该属性转换为基础数据存储(可能是SQL Server).因此,当EF尝试构造查询数据库所必需的SQL时,它会吓坏并说 "我不知道如何将此属性转换为有效的SQL"
确保您没有在查询中使用该属性,您应该没问题.
更新:
如果您希望实际上能够在结果集中使用计算列,那么您有两个基本选项:
1.)使用计算列在数据库中创建一个视图,并将您的实体绑定到该视图而不是原始基础表.您的财产现在将合法地绑定到可以查询的内容.
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;
Run Code Online (Sandbox Code Playgroud)
显然,这比选项1效率低,但根据原始查询可能不会很糟糕.
| 归档时间: |
|
| 查看次数: |
993 次 |
| 最近记录: |