实体框架迁移添加新列以查看

Afl*_*red 3 entity-framework view

我有一个看法

[Table("View1")]
    public class View1Model
    {
        [Key]
        public int Id { get; set; }
        public int Age { get; set; }
     }
Run Code Online (Sandbox Code Playgroud)

我想向表中添加另一个 public int Weight,因为在 sql 数据库中我更新了视图,但是迁移不起作用。

它说当我尝试更新数据库时

无法更改“dbo.View1”,因为它不是表。

我知道我可以删除“table”属性,但这不起作用,因为我需要签入我的代码。这是不可能的

小智 6

当你add-migration它会尝试AddColumn()Up()DropColumn()在 中Down()。您需要从迁移中删除这些行,并使用Sql(@"ALTER VIEW ...")直接在 SQL 中修改视图的命令手动更改视图。这将完成自动迁移试图做的事情。

  • 真的没有自动的方法来做到这一点吗?EF 难道不应该意识到它是一个视图,而不是一个表并采取相应的行动吗? (3认同)