Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 执行无法轻松或根本无法用SQL表示的数据迁移_Entity Framework_Entity Framework Migrations_Ef Core 2.0 - Fatal编程技术网

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字段是否存在呢?