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

本文关键字:实体 框架 存储过程 | 更新日期: 2023-09-27 18:26:45

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

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

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

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

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

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

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

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

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //Whatever code you already have here...
    modelBuilder.ComplexType<YourComplexModelHere>();
    base.OnModelCreating(modelBuilder);
}

您也可以在这里注册任意多个复杂模型来映射存储过程和函数,但模型中可能没有导航属性,因此它们必须是展开类。