Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityFramework,如何基于非实体列查询条目?_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# EntityFramework,如何基于非实体列查询条目?

C# EntityFramework,如何基于非实体列查询条目?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我想存储和查询一个计算字段。例如,休闲表: public class ModelTest { [Key] public int Id { get; set; } public int A { get; set; } public int B { get { return CSharpFunction(A) ; } } } 我希望能够像这样查询表中的值 results = db.ModelTests.Where(m => m.B = 10); 但是

我想存储和查询一个计算字段。例如,休闲表:

public class ModelTest
{
    [Key]
    public int Id { get; set; }

    public int A { get; set; }

    public int B { get { return CSharpFunction(A) ; } } 

}
我希望能够像这样查询表中的值

results = db.ModelTests.Where(m => m.B = 10);
但是我得到了一个衰减错误:

LINQ to实体中不支持指定的类型成员“B”。仅支持初始值设定项、实体成员和实体导航属性

唯一的方法是从db
db.ModelTests.ToList()
查询所有条目,然后根据Where statent进行选择

是否可以将
B
值存储到数据库中并优化此类查询

(也欢迎其他解决方案)


谢谢

实际上,当您从DbContext对象使用linq表达式时,您使用的是linq到实体


检查另一个答案

只要有一个支持属性,比如计算的Get_Prop Value。我不会将计算字段映射到这样的列。我甚至怀疑它会起作用。您可以对其使用[NotMapped]属性。如果计算类型允许,您可以在数据库表中创建计算列B。只要您使用IQueryable,它总是基于表达式树构造结果。在这种情况下,B不会映射到实体。。这就是为什么。我如何测试您所说的内容?如果您能够使用
IQueryable结果
,您可以。这篇文章很好地解释了这一点,我们理解了其中的区别。然而,B不是一个简单的变量。像这样的查询,我得到了休整错误。”LINQ to实体中不支持指定的类型成员“B”。只支持初始值设定项、实体成员和实体导航属性。“这就是我不能这样做的原因。@Danielsanto您最好使用存储过程。您仍然可以使用返回ModelTest集合的实体框架调用它。