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的回答,不建议自动升级数据库。不管怎样,这只是我在做个人项目时的一个想法。