如何在重新创建数据库时保留 ADO.NET EDM 的视图

How to persist views for ADO.NET EDM when database is recreated

我正在从事一个项目,该项目从表示数据库结构的代码优先 POCO 对象开始。出于开发目的,我们在数据库更改时使用 drop 和 create

有一个新的要求来支持 OData 可查询端点。所以我创建了新的 ADO.NET 实体数据模型(从现有数据库生成)。

我只想使用 EDM 从 数据库视图 中检索数据。 但据我所知,没有办法指定它们 "in code" 因此它们将保留在 EDM 中。如果我在数据库中创建一个视图,重新生成 EDM,然后更改代码优先结构,则重新生成 DB,视图消失。

这只是开发阶段的问题,但却是一个大问题。

我能想到的解决这个问题的唯一方法是保留所有视图的 SQL 定义,并在 Entity Framework 创建数据库时执行它们。

有没有更好的方法?

代码优先方法不支持创建视图。所以你必须寻找其他选择。我建议创建迁移(在大多数情况下自动升级有效)并避免使用 drop/create 方法。这将保留视图并保留代码优先的所有好处。