EF mysql 数据迁移_EF数据迁移命令

本文介绍了如何使用Entity Framework(EF)在MySQL数据库中进行数据迁移。首先通过`enable-migrations`生成配置文件,接着使用`add-migration InitialMigration -IgnoreChanges`忽略现有数据库表。在添加新的数据库结构如一对多关系后,通过`update-database`命令更新数据库。通过这个过程,实现了在BlogPost和Product之间建立一对多关系,并在数据库中添加了相应的字段和外键。
摘要由CSDN通过智能技术生成

在包管理器控制台中输入命令“enable-migrations”,然后按Enter键!Visual Studio将生成一个名为“Configurations.cs”的文件; 你可以安全地忽略它,但你需要保持它。

fcc1551fdfe5bd7f184d14767e84fcc0.png

EF迁移设置的最后一步是在包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”。“InitialMigration”(高亮的黄色)是您想要给当前迁移的名称,“IgnoreChanges”句柄是告诉EF Migrations您想要忽略当前数据库:这意味着您希望EF忽略所有现有表,以便不会为现有表生成脚本。

76bd03b0f25d396025c3c9aa7773945a.png

因此,您将看到Visual Studio生成的对应于您刚才添加的迁移(InitialMigration)的新.cs文件。如果你查看文件,它本质上是一个空白文件,由于我们在上一步使用了-IgnoreChanges句柄。

5df3d1fed9eef8747f13b5454b8269b2.png

要实际将此迁移保存到数据库,请在包管理器控制台中运行命令“update-database”。您的数据库现在可以进行实际的EF迁移任务!

8e0ca46c08154998b409a4ccf2edcad3.png

添加迁移和更新数据库

现在,假设我们想链接博客和产品,其中一个产品可以有多个BlogPost谈论产品本身。我们需要一个一对多的产品和BlogPost之间的关系。

实质上,我们需要的是BlogPost中的新ProductId字段,以及Product中的ICollection 属性。下面的截图总结了我们应该添加到Product.cs和BlogPost.cs(在Nop.Core项目中)的更新。

41047482709e4c2af87676b6964c4dbd.png

cdeea2196bb75d0a9047b06fe83c66b7.png

现在,您已在域模型上准备好属性,您还需要设置配置并告知Entity Framework如何格式化参数,例如关系,以及字段是否是可选的/必需的。在Nop.Data中打开BlogPostMap.cs,输入以下行,我们告诉EF 产品(或ProductId)是一个可选属性(意味着它可以有NULL作为值),一个产品可以有很多BlogPost,使用ProductId作为BlogPost和Product之间的外键。

84e3d8ea1626244f4d99c46eaa1ff4ed.png

我们现在有足够的信息来指示Entity Framework生成迁移,因此再次打开Package Manager Console,并输入命令“add-migration AddProductToBlogPost”。

e4619afa3a8d1ad4ab3ab352cd586a65.png

此命令会使Visual Studio生成类似于以下内容的.cs文件:

5e8be0d0e3bf5c7cb7c2a677f2f45285.png

要实际生成SQL脚本并更新数据库,请在Package Manager控制台中再次运行命令“update-database”。现在,要验证数据库是否正确更新,请在数据库中打开BlogPost表,并检查新字段,外键等是否确实已添加。

7962b5904b87e73ec59de58c19756a13.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值