Entity framework 执行无法轻松或根本无法用SQL表示的数据迁移
我有一个具有Entity framework 执行无法轻松或根本无法用SQL表示的数据迁移,entity-framework,entity-framework-migrations,ef-core-2.0,Entity Framework,Entity Framework Migrations,Ef Core 2.0,我有一个具有名称属性的对象,我必须将其拆分为第一个和最后一个 据我所见,在迁移和更改数据期间,没有机会构建DbContext。我也找不到一个在SQL中实现这一点的好方法(除了一个超出我专业范围的存储过程) 有没有一种自动的方法可以做到这一点(给定一个具有拆分名称逻辑的函数) 我想在一次迁移中添加第一次和最后一次,然后在另一次迁移中删除名称,但我找不到一个钩子来执行它们之间的更新 有什么想法吗?您可能需要执行两次单独的迁移。您建议的第一个将添加first和Last(在配置文件的Seed函数中,您可
名称
属性的对象,我必须将其拆分为第一个
和最后一个
据我所见,在迁移和更改数据期间,没有机会构建DbContext
。我也找不到一个在SQL中实现这一点的好方法(除了一个超出我专业范围的存储过程)
有没有一种自动的方法可以做到这一点(给定一个具有拆分名称逻辑的函数)
我想在一次迁移中添加第一次
和最后一次
,然后在另一次迁移中删除名称
,但我找不到一个钩子来执行它们之间的更新
有什么想法吗?您可能需要执行两次单独的迁移。您建议的第一个将添加first和Last(在配置文件的Seed函数中,您可以更新数据库中的值以反映您的更改) 然后,第二次迁移可以删除Name字段
类似的东西对你有用吗?不幸的是,没有。它必须是某种特定于目标数据库的DML/DDL结构,如SQL命令、批处理、块等。@IvanStoev这太可悲了。我猜如果在迁移过程中被捕获,那么上下文的模式将无效。它仍然需要手动步骤。您描述的Seed函数必须在删除Name属性和提交的更改后删除,此时将无法再进行此迁移。因此,对于每个迁移的数据库,必须有人在第一次迁移提交时签出代码,运行第一次迁移,种子,然后更新代码并重复。哦,好吧!如果您在seed函数中编写了实际的sql,那么您可以(使用exists关键字)检查Name字段是否存在呢?