运行async function* gen() {
for (let i = 1; i <= 6; i++) yield i;
}
//const ait = gen();
(async() => {
// first iteration
const ait = gen()
for await (const e of ait) console.log(1, e);
})();
(async() => {
// second...
const ait = gen()
for await (const é of ait) console.log(2, é);
})();
将在项目中产生a Migrations directory being created。此目录是否应提交版本控制(Git等)?
答案 0 :(得分:2)
您始终可以使用dotnet ef migrations ...
自己重新创建迁移,但这仅适用于简单的操作。
如果您要使用自定义SQL进行复杂的迁移,或者需要按特定顺序运行DDL命令,则需要将迁移文件保存在VCS中以保持该顺序。
一个示例是创建一个计算列。您需要在第一个迁移中创建表,然后在第二个迁移中使用手写SQL创建表以创建SQL函数,然后在第三个迁移中引入使用该函数的计算列。
所有这些操作都需要遵循一个命令,而不能使用简单的pip install jupyter notebook
命令创建该命令
答案 1 :(得分:2)
是的,您当然应该将EFCore迁移提交到版本控制。
引入数据模型更改后,EF Core会将当前模型与旧模型的快照进行比较以确定差异,并生成迁移源文件。可以像其他任何源文件一样在项目的源控件中跟踪这些文件。
让我们假设:您没有将迁移提交到版本控制。并且过了一段时间,您或您的一个队友对数据模型进行了更改,EFCore将无法获取最后的快照,因此更新数据库可能会导致一些冲突/更改,这些冲突/更改可能已经存在。.
答案 2 :(得分:0)
绝对应该在源代码管理中提交迁移。
删除迁移将使EF无法为将来对现有数据库的更改生成将来的迁移。
此外,如果您执行以下操作...
此处EF将失败,因为基础表已经存在,并且从#4创建的迁移将是“创建”语句,而不是更新语句。