修改nopCommerce中的實體

                            對已有實體增長一個屬性(對Category增長一個 SomeNewProperty)
 
  最近在研究nopcommerce,這裏是對官網上文檔的學習,完成了更改現有實體一個屬性和開啓code first的操做。官網地址:http://docs.nopcommerce.com/pages/viewpage.action?pageId=1442499
 
1.對實體對象的操做。這裏的實體指的是領域對象。實體對象經過兩個類來匹配到數據庫的表中
1)Category.cs
     這個類定義了應用要用到屬性、字段和方法。
 
File System Location : [Project Root]\Libraries\Nop.Core\Domain\Catalog\Category.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]\Libraries\Nop.Data\Mapping\Catalog\CategoryMap.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]\Presentation\Nop.Web\Administration\Models\Catalog\CategoryModel.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]\Presentation\Nop.Web\Administration\Validators\Catalog\CategoryValidator.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]\Presentation\Nop.Web\Administration\Views\Category\ _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實體添加屬性的操做。
 

 

 
 
                             
相關文章
相關標籤/搜索