【问题标题】:Ignore create/change of model for a SQL View using Entity Framework忽略使用实体框架为 SQL 视图创建/更改模型
【发布时间】:2014-03-27 03:24:12
【问题描述】:

如果我创建一个 SQL 视图并编写一个模型来表示该视图,我仍然希望它能够映射到能够从 SQL 视图中读取数据。 Add-Migration 代码会将其视为一个新表,因为实体框架(版本 6)不理解视图。

我是否可以分配一个属性来阻止迁移代码认为它需要创建的新表或模型构建器中的某些东西?

【问题讨论】:

  • 我不认为这是重复的,我知道我可以使用 up/down 代码来控制迁移,但我希望未来的迁移代码实例不评估某些模型(因为表示已经创建的视图),通过下面@Mashton 的建议等属性。

标签: sql-server asp.net-mvc entity-framework sql-view


【解决方案1】:

添加迁移异常。迁移后重写为:

public override void Up()
{
    Sql("CREATE VIEW [viewname] AS SELECT {any select expression} ");
}

public override void Down()
{
    Sql("DROP VIEW [viewname]");
}

【讨论】:

    【解决方案2】:

    来自this SO answer

    Add-Migration IgnoreViewClasses –IgnoreChanges
    

    (适用于 EF 4.3.1+)

    这会创建一个空迁移,从现在开始忽略任何新创建的类。

    【讨论】:

      【解决方案3】:

      您可以使用 [NotMapped] 属性来停止将代码优先类迁移到数据库创建中。

      【讨论】:

      • NotMapped 会导致属性不链接到它所代表的表中的列,在这种情况下这不是所需的目标。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多