gpt4 book ai didi

entity-framework - 如何将 SQL Server View 与 EF Code First 迁移结合使用

转载 作者:行者123 更新时间:2023-12-02 05:21:15 25 4
gpt4 key购买 nike

我首先将一个包含大量表和 View 的小型数据库逆向工程到 EF 5 代码中。

当我这样做时,我为我的每个表获得了一组模型和映射类,当我尝试使用生成的 DbContext 查询数据库时,它们工作得很好。

它还会为我的每个 View 生成 POCO 类,但是当我使用包管理器控制台运行 Enable-MigrationsAdd-Migration 时,迁移不会重新开始- 创建 SQL Server View 。

我尝试手动更新迁移以使用自定义 SQL 创建 View ,如下所示:

Sql("CREATE VIEW [dbo].[viewUsersDeactivated] "
+ "AS "
+ "SELECT ... ");

这在我运行 Update-Database 时工作正常,但是从 Update-Database -Script 命令输出的 SQL 脚本似乎无效,导致在以下错误中:

'CREATE VIEW' must be the only statement in the batch.

在每个自定义 SQL 语句之间插入 Sql("GO"); 可以生成脚本,但之后我无法再使用 Update-Database 进行更新,而且我找不到对两者都适用的方法。

所以我的问题归结为:如何在代码优先迁移脚本中包含 SQL Server View ,以便我可以使用 Update-Database 和生成的生产脚本创建数据库使用 Update-Database -Script?

谢谢!

最佳答案

不完全确定这是最佳实践,其他人可能有更好的解决方案,但我通过将整个 View 创建脚本包装在 Execute 中来解决这个问题,因此:

var sql = "CREATE VIEW [dbo].[TheViewName] AS ......."
sql = sql.Replace("'", "''"); // sanitize the sql string
sql = string.Format("EXECUTE sp_executesql N'{0}'", sql);
Sql(sql);

关于entity-framework - 如何将 SQL Server View 与 EF Code First 迁移结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com