【发布时间】:2020-06-17 18:51:08
【问题描述】:
我有一个实体,其字段不应在数据库中创建,但应从存储过程中填充。
public class Item
{
public int Id {get; set;}
public int CalculatedField {get; set;}
}
那我想用存储过程来填充它
var items = _db.Items.FromSqlRaw("select * from StoredProcedure()").ToList()
但是如果我使用[NotMapped] 属性或.Ignore fluent 选项 - EF 字段完全,即使我的存储过程返回CalculatedField,EF 也不会使用它。
有没有办法实现这种行为?
【问题讨论】:
-
“EF 不使用它”是什么意思?您希望 EF 如何使用未映射的属性?
-
@devlincarnate 我想找到一种方法不在数据库中创建字段,而是从 rawQuery 中填充它
-
那么,是什么阻止你这样做呢?您的原始查询是否不返回该字段的值?
-
@devlincarnate 它会返回它(如果我在 DB 中执行它),但 EF 不会将该字段映射到 storedProccedure 结果,因为它是 [NotMapped]
-
你可以自己做...创建一个类的实例,并从查询结果中分配属性值。如果您有对象列表,请循环执行。或者使用 LINQ 或 Lambda
标签: c# entity-framework ef-core-3.0 ef-core-3.1