【问题标题】:Entity Framework 5 stored procedures to non entitiesEntity Framework 5 对非实体的存储过程
【发布时间】:2016-03-19 19:37:19
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 只需为这些程序创建一个实体,不需要再复杂了。
  • 当我运行我的更新数据库时,它不会尝试根据这个实体为我创建一个表吗?
  • 仅当您将其添加到您的上下文中。

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


【解决方案1】:

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

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

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

    modelBuilder.ComplexType<YourComplexModelHere>();

    base.OnModelCreating(modelBuilder);
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多