【问题标题】:EF Code First : Mapping nontable objects with Fluent APIEF Code First:使用 Fluent API 映射非表对象
【发布时间】:2012-01-20 09:52:57
【问题描述】:

我应该如何在 EF CodeFirst 中使用流畅的 API 映射我的非表对象,例如 Views、StoredProcedure 等。

【问题讨论】:

    标签: c# .net entity-framework ef-code-first


    【解决方案1】:

    首先在代码中不支持映射到存储过程和 vew。这些是 Julia Lerman 的 Programming Entity Framework 中的一些解决方法:Code First。

    映射到可更新视图

    modelBuilder.Entity<MyEntity>().ToTable("MY_VIEW")

    视图列名称应与实体字段名称相同,并且您 可以使用实体框架插入、更新和删除数据 以及选择它。 只需对 Code First 撒谎并告诉 View 作为表

    使用视图填充对象

    var myEntity = dbContext.MyEntity.SqlQuery("SELECT * FROM dbo.MY_VIEW")

    视图列名称应该与实体字段名称相同,并且您仍然可以获得 DbContext 功能,例如更改跟踪、延迟加载。

    使用视图填充非模型对象

    var myNonModel = dbContext.Database.SqlQuery("SELECT * FROM dbo.MY_VIEW")

    视图列名称应与实体字段名称相同。

    使用存储过程

    使用视图的相同技术。

    var myEntity = dbContext.MyEntity.SqlQuery("dbo.StoredProcedureName @p0 @p1", myParam1, myParam2)

    【讨论】:

      【解决方案2】:

      代码首先不支持存储过程的映射。视图的映射必须被破解——你会假装视图是一个表并希望你的应用程序能够工作。 Fluent-api 旨在仅支持代码优先方案 = 您的应用程序将创建一个数据库。因此它不支持任何具有数据库级别逻辑的数据库功能,例如存储过程、视图或函数。

      【讨论】:

      • +1:当真正使用 Code-First 或与真正 Code-First 相关的任何问题/答案时,数据库不应包含任何应用程序使用的视图、函数或 S.P. .
      猜你喜欢
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2014-04-19
      • 2014-09-26
      相关资源
      最近更新 更多