实体框架核心数据库 - 初始支架后首次更新?

2024-03-14

我正在使用 Entity Framework Core,并且一直致力于实现数据库优先的应用程序。最初的 Scaffold-DbContext 命令工作得很好,并且正确创建了我的所有实体,如果没有按照我想要的方式组织的话。它是一个 SQL Server 数据库,它使用模式来划分职责范围,而且我并不真正关心 Scaffold 只是将它们全部放入一个文件夹中这一事实。

除此之外,我一直无法确定是否有办法在数据库更新发生后重新运行脚手架来更新类。我能找到的最接近的方法是使用 -force 参数重新运行 Scaffold-DbContext 命令。但是,这也会覆盖我添加到 Context.cs 文件中的任何自定义代码,例如将连接字符串指向配置值而不是硬编码。

我看过其他几个类似的问题this one https://stackoverflow.com/questions/29300777/is-there-an-entity-framework-7-database-first-poco-generator,但它只谈论了最初的脚手架,而不是进一步的更新。

有没有办法不需要手动编码未来的任何更改来做到这一点?如果没有这一点,数据库优先的方法对于 EF Core 来说似乎毫无价值。


就像您自己所说...数据库优先方法的主要问题:您永远不应该手动更改模型并开始重命名事物等。除非您 100% 确定您的数据库不会再更改。如果您不是 100% 确定,只需使用自动生成的模型进行编码即可。

重新脚手架将覆盖直接在模型类中所做的任何更改,删除您已更改或添加的所有内容。

但是您可以在不会被自动映射覆盖的一侧创建部分类:

public partial class TableName
{
    public string Name_of_a_property
    {get; set;}
}

这是向实体添加代码的好方法,同时确保它不会被自动映射影响。只需确保分部视图与自动生成的类具有相同的名称,一切都应该没问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架核心数据库 - 初始支架后首次更新? 的相关文章

随机推荐