未通过SqlQuery()设置带有[NotMapped]的EF 5代码优先模型

本文关键字:EF 代码 模型 NotMapped SqlQuery 设置 | 更新日期: 2023-09-27 17:50:22

可能重复:
使用linq 在模型类Entity Framwork Code First中的NotMapped属性中获取值

我在我的项目中使用Entity Framework 5Code First,我的模型看起来或多或少是这样的:

public class Category
{
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public virtual Category Parent { get; set; }
    [NotMapped]
    public int Level { get; set; }
}

生成的table包含除级别column(如预期(之外的所有列

现在,我有一个stored procedure,它计算Category节点相对于其父节点的级别。

如果我在SQL Server Mgmt Studio中执行stored procedure,它将返回我的模型中指定的列,包括[NotMapped]级别column

问题是:如果我这样调用stored procedure,那么级别column就没有被填充:Context.Database.SqlQuery<TModel>(storedProcedure, parameterArray);,其中TModelCategory

有什么方法可以"重复使用"model类别吗?

未通过SqlQuery()设置带有[NotMapped]的EF 5代码优先模型

您明确表示属性"Level"不是模型的一部分,因此它当然不会由存储过程填充。你为什么会期待其他的?

唯一的方法是手工解析sp的结果,并自己创建模型类的实例。