nopCommerce EF codefirst翻译版

在NopCommerce中使用实体框架(EF)代码优先迁移进行快速自定义

 

我见过很多nopCommerce论坛用户询问他们如何使用Entity Framework(EF)Code-First Migrations来定制nopCommerce,添加新的字段和entites到核心。在进行nopCommerce定制项目时,我实际上自己使用了很多EF迁移,我必须说它在开发过程中有很大帮助。

今天,我将与您分享如何在nopCommerce项目中做到这一点!我将使用nopCommerce 3.20作为示例,但您可以轻松地将该概念应用于其他版本!

在nopCommerce解决方案中设置EF迁移

您要做的第一件事是在nopCommerce解决方案中启用迁移。因此,在Visual Studio中启动nopCommerce,查看Nop.Web项目,然后打开Web.config。您需要将连接字符串添加到开发数据库。请注意,在Web.config中添加连接字符串不会影响nopCommerce的工作方式,因为nopCommerce不会在Web.config中查找连接字符串。

nopCommerce中的EF迁移 - 设置Web.config

然后,在Nop.Data中打开NopObjectContext.cs。添加一个新的构造函数,该构造函数指向您刚刚在上一步中添加的连接字符串的名称。注意:将Pro-nopCommerce替换为连接字符串的名称。

nopCommerce中的EF迁移 - 设置NopObjectContext.cs

下一步是实际启用项目中的迁移。如果您还没有这样做,请启动Package Manager控制台。在“默认项目”下拉列表中,选择Nop.Data作为项目。还请确保选择Nop.Web作为启动项目现在,在Package Manager Console中输入命令“enable-migrations”,然后按Enter键!Visual Studio将生成一个名为“Configurations.cs”的文件; 你可以安全地忽略它,但你需要保留它。

nopCommerce中的EF迁移 - 启用迁移

EF迁移设置的最后一步是通过在程序包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”来完成的。“InitialMigration”(highligted yellow)是您要为当前迁移提供的名称,“IgnoreChanges”句柄用于告诉EF Migrations您希望按原样省略当前数据库:这意味着您希望忽略EF所有现有表,以便不为现有表生成脚本。

nopCommerce中的EF迁移 - 初始迁移

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

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

nopCommerce中的EF迁移 - 更新数据库

添加迁移和更新数据库

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

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

nopCommerce中的EF迁移 -  BlogPost.cs

nopCommerce中的EF迁移 -  Product.cs

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

nopCommerce中的EF迁移 -  BlogPostMap

我们现在有足够的信息来指示实体框架生成迁移,因此再次打开包管理器控制台,并输入命令“add-migration AddProductToBlogPost”。

nopCommerce中的EF迁移 - 将产品添加到博客帖子

此命令使Visual Studio生成.cs文件,如下所示:

nopCommerce中的EF迁移 - 生成的迁移CS文件

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

nopCommerce中的EF迁移 - 验证数据库

结论

实体框架代码优先迁移可以是一个非常方便的工具,如果您经常自定义nopCommerce。像这样,当您想要向数据库添加新字段,表等时,您不需要触摸数据库。一切都可以从代码中完成!

学习这项技术,并享受有趣的编码!

猜你喜欢

转载自www.cnblogs.com/ranke110/p/nopCommerce.html