代码之家  ›  专栏  ›  技术社区  ›  Nathan Friend

实体框架代码首先使用现有数据库视图

  •  1
  • Nathan Friend  · 技术社区  · 6 年前

    我的团队将首先使用实体框架代码启动一个新项目。我们为项目创建了一个新的空数据库;架构将通过代码优先迁移进行管理。

    但是,我们需要访问一个外部数据库(由另一个项目管理)中的一段数据。我们可以通过自己数据库中映射到外部数据库表的视图访问这些数据。

    1. 创建迁移时,实体框架应该 尝试创建或编辑视图。
    2. 在运行时,我们应该仍然能够使用实体框架通过视图查询/插入/更新/删除数据,就像它是一个常规表一样。

    我们都看过 [NotMapped] 属性和 .Ignore()

    这种配置是可以先使用实体框架代码,还是需要先切换到数据库?

    我们使用的是实体框架核心版本2.1.1。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ivan Stoev    6 年前

    没有同时满足这两个需求的配置,我看不出数据库优先(或代码第二)有什么帮助,因为问题是迁移,而不是映射。

    通过将视图映射为表(通常是, [Table] 数据注释或 ToTable 流畅的API)。对于EF CRUD操作,只要它支持相应的SQL命令,那么实际具有该名称的db对象是表还是视图就无关紧要了。

    CreateTable 在里面 Up / DropTable Down 然后简单地移除它们。

    custom MigrationSqlGenerator ,但它更复杂,不值得只为一个视图而努力。