NopCommerce数据迁移

来源:互联网 发布:linux printf 串口 编辑:程序博客网 时间:2024/06/06 18:29
PM> enable-migrations 已在项目“EasyWeChat.Data”中启用迁移。若要覆盖现有迁移配置,请使用 -Force 参数。 PM> add-migration 位于命令管道位置 1 的 cmdlet Add-Migration 请为以下参数提供值: Name: 20141021 正在为迁移“20141021”搭建基架。 此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration 20141021”重新搭建基架。 PM> update-database 指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。 正在应用显式迁移: [201410210300003_20141021]。 正在应用显式迁移: 201410210300003_20141021。 正在运行 Seed 方法。
———-

新增实体及实体映射后添加迁移文件

新增实体Link,新增实体后项目结构图为:


新增的实体Link代码为:

namespace Nop.Core.Domain.Links

{

   ///<summary>

   ///     代表一个链接

   ///     <para>Representsa link</para>

   ///     <para>zaxx 2015年8月29日14:20:01</para>

   ///</summary>

   public classLink :BaseEntity

   {

       public string Name {get;set; }

 

       public string Value {get;set; }

   }

}

1.2 新增实体映射LinkMap

新增实体映射LinkMap后,项目结构图为:


新增的实体映射LinkMap代码为:

using Nop.Core.Domain.Links;

 

namespace Nop.Data.Mapping.Links

{

   ///<summary>

   ///     链接映射类

   ///     <para>映射链接实体类Link与数据库中的数据表Links</para>

   ///     <para>zaxx2015年8月29日 14:20:12</para>

   ///</summary>

   public classLinkMap :NopEntityTypeConfiguration<Link>

   {

       public LinkMap()

       {

            this.ToTable(“Links”);

            this.HasKey(t => t.Id);

            this.Property(l =>l.Name).HasMaxLength(100);

            this.Property(l => l.Value).HasMaxLength(300);

       }

   }

}

1.3 添加迁移文件

因新增了实体,为达到实体与数据库表的一一对应,需要添加迁移文件。在程序包管理器控制台中,执行【增加迁移】的命令如下:

Add-Migration AddLink

执行【增加迁移】命令后,界面截图如下:


注意:增加实体类后,执行【增加迁移】命令后生成的迁移文件中的Up与Down应分别对应着创建及删除实体类对应的表的代码。如果Up、Down中没有创建、删除表的代码,则可【重新生成解决方案】,然后再执行【增加迁移】命令,应该就有相应代码了。

1.4& 更新数据库

在程序包管理器控制台中,更新数据库的命令为:Update-Database,若想看到执行更新操作时的详细信息,可以带上参数Verbose。

Update-Database -Verbose

执行更新数据库命令后程序包管理器控制台显示信息如下:



在Web.config添加

<connectionStrings><add name="NopDb" connectionString="server=.;database=Nop;uid=sa;password=12345678" providerName="System.Data.SqlClient" /></connectionStrings>

在NopObjectContext文件中添加默认构造函数

namespace Nop.Data{    /// <summary>    /// Object context    /// </summary>    public class NopObjectContext : DbContext, IDbContext    {        #region Ctor        public NopObjectContext(string nameOrConnectionString)            : base(nameOrConnectionString)        {            //((IObjectContextAdapter) this).ObjectContext.ContextOptions.LazyLoadingEnabled = true;        }        public NopObjectContext()            : base("NopDb")//添加这个默认构造函数        {            //((IObjectContextAdapter) this).ObjectContext.ContextOptions.LazyLoadingEnabled = true;        }
原创粉丝点击