【问题标题】:EF 5 Code First model with [NotMapped] is not set via SqlQuery()? [duplicate]没有通过 SqlQuery() 设置带有 [NotMapped] 的 EF 5 Code First 模型? [复制]
【发布时间】:2013-01-02 20:59:34
【问题描述】:

可能重复:
Get values in NotMapped property in model class Entity Framwork Code First using linq

我在我的项目中使用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 包含除Level column 之外的所有列(如预期的那样)

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

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

问题是:如果我像这样调用stored procedure,则级别column 未填充:Context.Database.SqlQuery<TModel>(storedProcedure, parameterArray); 其中TModelCategory

有没有办法“重复使用”这个类别model

【问题讨论】:

  • 哇...我没有找到那个问题,我总是在正手搜索!谢谢:)

标签: c# .net entity-framework entity-framework-5


【解决方案1】:

您清楚地说属性“Level”不是您模型的一部分,因此它当然不会被您的存储过程填充。为什么你会期待别的?

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

【讨论】:

  • 我理解你的反应。我唯一没有得到的是存储过程的列未设置为可用的列。但是,你的反应让我思考了我的问题,我将尝试扩展 class 左右这个扩展我的类别 model
  • 存储过程列设置为可用的列。但是您的模型中没有您的“级别”列。实体框架会忽略它,因为您明确告诉它这样做。
  • 我将其标记为答案,因为它让我意识到我必须以不同的方式来做。现在我有一个适合 Stored procedure 结果的模型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
相关资源
最近更新 更多