C# 实体框架核心更新数据库-无需迁移的代码优先方法
我一直在寻找一种方法,它可能会也可能不会得到支持,我想我正在寻找一个具体的答案 我一直在寻找以下需求的解决方案:C# 实体框架核心更新数据库-无需迁移的代码优先方法,c#,entity-framework-core,asp.net-web-api2,C#,Entity Framework Core,Asp.net Web Api2,我一直在寻找一种方法,它可能会也可能不会得到支持,我想我正在寻找一个具体的答案 我一直在寻找以下需求的解决方案: EFCore代码优先方法 现有数据库表中已有大量数据 通过更新我的模型,向所述数据库表添加两列 无需通过PM控制台进行迁移,只需在应用程序启动时使用上下文和Fluent Api即可 没有数据库娱乐 方法可以是:检查配置文件或某种类型,将其与数据库中版本表中的版本进行比较,以触发更新 项目模板:Web Api 2,Uwp 如果这一点得到支持,是否可取?若否,原因为何?缺点是什么 根
- EFCore代码优先方法
- 现有数据库表中已有大量数据
- 通过更新我的模型,向所述数据库表添加两列
- 无需通过PM控制台进行迁移,只需在应用程序启动时使用上下文和Fluent Api即可
- 没有数据库娱乐
- 方法可以是:检查配置文件或某种类型,将其与数据库中版本表中的版本进行比较,以触发更新
- 项目模板:Web Api 2,Uwp
-如果版本与call Update()或Migrate()或两者不匹配,以迁移对象/类型作为参数,这是基于观点的,但下面是我的评论 EFCore代码优先方法 您是否意识到EF Core的局限性?它的linq提供商不能做EF6所做的一切 现有数据库表中已有大量数据 没关系 通过更新我的模型,向所述数据库表添加两列 这似乎是EF(核心)应用程序的标准实践 无需通过PM控制台进行迁移,只需在应用程序启动时使用上下文和Fluent Api即可 我不建议自动升级数据库,因为迁移的风险并不是在您需要的时候进行的。我称之为意外升级数据库 没有数据库娱乐 我不确定这意味着什么,但是是的,EF(核心)可以在不重新创建db的情况下工作 方法可以是:检查配置文件或某种类型,将其与数据库中版本表中的版本进行比较,以触发更新 项目模板:Web Api 2,Uwp
Uwp部分似乎无关紧要,因为我假设所有数据库访问都将通过api应用程序完成。您应该做的是在现有数据库的模型中创建所有内容。伪造迁移表信息。然后添加任何迁移来修改您的数据库。那么您真的需要迁移吗?这些都不能在应用程序启动或类似的操作时实现?您可以在启动时调用迁移。感谢链接,我将尝试这些操作,但我记得我已经这样做了,但将重试。但这应该适用于Uwp和Web api 2,对吗?谢谢!这是很有见地的。是的,我知道与ef6相比,efcore有一些限制,我必须重新检查这些限制是什么。我提到的项目模板可能是不相关的,可能仅供参考,因为我有一个单独的数据访问库。我会移除标签。嗨@NicoZhu MSFT,不是真的,但是这个答案很有用。我想我在问一个模糊的问题。让我再试一次,我想为我的数据访问提供一个解决方案,以便在向模型添加属性时自动更新我的数据库,为什么是自动的?因为我的解决方案中不需要迁移历史记录。我知道自动迁移是存在的,但即使在一个简单的项目中也没有成功,也许我还没有找到我正在寻找的正确指南。但根据tymtam的回答,不建议自动升级数据库。不管怎样,这只是我在做个人项目时的一个想法。