程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net MVC示例項目“Suteki.Shop”分析之Model和Service

Asp.net MVC示例項目“Suteki.Shop”分析之Model和Service

編輯:關於ASP.NET

在Suteki.Shop中Model的原型是基於Linq to SQL創建的,其dbml文件位於Suteki.Shop\Shop.dbml。 而Suteki.Shop在此文件的基本上,以"partial class "的方式在Suteki.Shop\Model文件夾下 創建了相應的類文件以擴展Shop.dbml中Model類的一些方法和屬性聲明,如下圖:

為了便於 大家理解,下面以Model中的Product.cs為例進行說明。

Product是對網站中所銷售商品的數據信 息類。在其中定義了一些屬性(聲明在Shop.dbml中):

private int _ProductId;  // 產品ID
private int _CategoryId;    //產品所屬分類ID
private string _Name;  // 產品名稱
private string _Description;//產品描述
private decimal _Price;  //產 品價格
private int _Position;  //在列表中的位置
private int _Weight;  //重量
private bool _IsActive;  //當前是否激活顯示
private string _UrlName;    //產品的 URL鏈接

而Product.cs這個文件其實是以partial方式對Shop.dbml中的Product類的 "擴展",下面是其實現代碼:

public partial class Product : IOrderable, IActivatable, IUrlNamed
{
partial void OnNameChanging(string value)
{
value.Label("Name").IsRequired();
}

partial void OnNameChanged ()
{
UrlName = Name.ToUrlFriendly();
}

partial void OnDescriptionChanging(string value)
{
value.Label ("Description").IsRequired();
}

public bool HasMainImage
{
get
{
return this.ProductImages.Count > 0;
}
}

public Image MainImage
{
get
{
if (HasMainImage) return this.ProductImages.InOrder().First().Image;
return null;
}
}

public bool HasSize
{
get
{
return this.Sizes.Active().Count() > 0;
}
}

public Size DefaultSize
{
get
{
if (this.Sizes.Count() == 0) throw new ApplicationException("Product has no default size");
return this.Sizes[0];
}
}

public string IsActiveAsString
{
get
{
if (IsActive) return string.Empty;
return " Not Active";
}
}

public static Product DefaultProduct(int parentCategory, int position)
{
return new Product
{
ProductId = 0,
CategoryId = parentCategory,
Position = position
};

}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved