实体框架5将存储过程存储到非实体

时间:2015-12-14 10:46:16

标签: c# entity-framework entity-framework-6 entity-framework-5

实体框架相当新。我们首先使用代码来创建具有迁移脚本的实体(以创建数据库)。

存储过程用于从数据库返回数据。这些过程也在迁移脚本中创建。

但是,存储过程返回的结果不会直接映射到我们模型中的实体。我们所有的样本都通过映射到实际上并不能满足我们需求的实体。

实现这一目标的最佳方法或建议是什么?

创建一组替代模型,并以某种方式映射到程序返回结果中的那些模型?

1 个答案:

答案 0 :(得分:0)

您可以为存储过程注册复杂模型以进行映射,而不必将它们作为数据库实体。

在你的DbContext中你应该已经覆盖OnModelCreating并且可以注册你的复杂模型进行映射

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //Whatever code you already have here...

    modelBuilder.ComplexType<YourComplexModelHere>();

    base.OnModelCreating(modelBuilder);
}

您可以在此处注册任意数量的复杂模型,以便映射存储过程和函数,但是您可能在模型中没有导航属性,因此它们必须是扁平化类。