zoukankan      html  css  js  c++  java
  • 修改nopCommerce中的实体

                               对已有实体增加一个属性(对Category增加一个SomeNewProperty)
     
      最近在研究nopcommerce,这里是对官网上文档的学习,完成了更改现有实体一个属性和开启code first的操作。官网地址:http://docs.nopcommerce.com/pages/viewpage.action?pageId=1442499
     
    1.对实体对象的操作。这里的实体指的是领域对象。实体对象通过两个类来匹配到数据库的表中
    1)Category.cs
         这个类定义了应用要用到属性、字段和方法。
     
    File System Location: [Project Root]LibrariesNop.CoreDomainCatalogCategory.cs 
    Assembly: Nop.Core 
    Solution Location: Nop.Core.Domain.Catalog.Category.cs
    添加一个属性:
    public string SomeNewProperty { get; set; }
     
    2)CategoryMap.cs
         这个类定义了属性对应的表字段,以及表关系。Nop采用了EF 的Code First方式。Code first有两种方式来实现这种功能:DataAnnotations 和Fluent API。Nop采用了纯粹的Fluent API方式,这样POCO实体的功能更纯粹。
     
    File System Location: [Project Root]LibrariesNop.DataMappingCatalogCategoryMap.cs 
    Assembly: Nop.Data 
    Solution Location: Nop.Data.Mapping.Catalog.CategoryMap.cs
    增加一条配置:
    this.Property(m => m.SomeNewProperty).HasMaxLength(255).IsOptional(); 
     
    2.对实体ViewModel的操作。
         Nop把实体验证独立到CategoryValidator.cs中,再通过对实体添加特性[Validator(typeof(CategoryValidator))]进行验证。所以这里也要改两个类
    1) CategoryModel.cs 
         这个类相当于ViewModel。
     
    File System Location: [Project Root]PresentationNop.WebAdministrationModelsCatalogCategoryModel.cs 
    Assembly: Nop.Admin 
    Solution Location: Nop.Admin.Models.Catalog.CategoryModel.cs
    增加一条属性:
    public string SomeNewProperty { get; set; }
     
    2) CategoryValidator.cs
         实现viewmodel的验证。
    File System Location: [Project Root]PresentationNop.WebAdministrationValidatorsCatalogCategoryValidator.cs 
    Assembly: Nop.Admin 
    Solution Location: Nop.Admin.Validators.Catalog.CategoryValidator.cs
     
    增加一条验证规则:
    RuleFor(m => m.SomeNewProperty).Length(0, 255);
     
    3.页面展示的操作。
         把增加的属性显示到页面上,可以进行操作。
     
    File System Location: [Project Root]PresentationNop.WebAdministrationViewsCategory _CreateOrUpdate.cshtml 
    Assembly: Nop.Admin 
     
    在240行下增加:
    <tr>
        <td class="adminTitle">
            @Html.NopLabelFor(model => model.SomeNewProperty):
        </td>
        <td class="adminData">
            @Html.EditorFor(model => model.SomeNewProperty)
            @Html.ValidationMessageFor(model => model.SomeNewProperty)
        </td>
    </tr>
     
    4.对Controller的操作
    文中提到了在Controller中对涉及到实体转换时,可能需要添加代码。但是nop用AutoMapper自动进行了实体转换,这里无实际的代码修改。
     
    注意:Nop没有开启数据迁移,按文档操作时需要手动在表Category上添加列SomeNewProperty
     
     
    开启数据迁移相关操作参考 
    总结起来就是两步:1.在webconfig中添加连接字符串。2.在上下文对象NopObjectContext中增加一个无参构造函数                         public NopObjectContext():base("connectionString"){}
     
    关键在于Add-Migration InitialMigration -IgnoreChanges   后面的参数一定要有,表示初始状态
    至此,完成了对nop实体添加属性的操作。
     
     
     
                                 
     
  • 相关阅读:
    TCP协议
    数据包以及数据传输
    网络模型
    Executors常见的线程池创建以及其问题
    线程池
    阻塞队列和死锁
    ConcurrentHashMap
    ReentrantLock,公平性锁和非公平性锁
    Lock
    jQuery如何获取table中每一行的数据并发送给后端?
  • 原文地址:https://www.cnblogs.com/hunji-fight/p/5199249.html
Copyright © 2011-2022 走看看