MVC3 Model

1 篇文章 / 0 new
author
MVC3 Model
► 當 Model 資料異動後, 必須設定 Entry.state, 如 storeDB.Entry(order).State = EntityState.Modified; 否則雖然執行 storeDB.SaveChanges(); 異動資料仍然不會回寫到資料庫內.

► Model, 表單驗證使用的參數 (Data Annotation attributes)
Required  – 表示必須提供內容的欄位. [Required(ErrorMessage = "這欄位必須輸入資料")]
DisplayName 顯示名 – 定義表單字段的提示名稱. [Display(Name = "類型")]
StringLength 字串長度 – 定義字串類型的屬性的最大長度. [StringLength(10), ErrorMessage = "最多輸入10個字") ]
Range  – 為數位類型的屬性提供最大值和最小值. [Range(1,100)]
Bind  – 列出在將請求參數綁定到模型的時候,包含和不包含的欄位
ScaffoldColumn  - 在編輯表單的時候,需要隱藏起來的的字元. [ScaffoldColumn(false)]
RegularExpression - 正規化資料格式驗證. [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}",
            ErrorMessage = "無效的 Email 格式")]
db 相關參數
Key  - 告訴系統此欄位為主鍵(primary key)
DataType  - 告訴系統此欄位資料型態. [DataType(DataType.EmailAddress)]

► 當系統出現"已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉"
表示 DB 一個 connect 僅允許對應一個 DataReader, 若要同時對應一個以上時, 則需在 connectionString 內, 加入 MultipleActiveResultSets=true 參數來開啟

► 當系統出現"無法完成操作. 提供的 SqlConnection 未指定初始目錄", 則 connectionStrings 增加 Initial Catalog 參數即可
<connectionStrings>
  <add name="StoreEntities"
      connectionString="data source=.\SQLEXPRESS; Initial Catalog=MyStore; AttachDBFilename=|DataDirectory|MyStore.mdf; Integrated Security=SSPI"
      providerName="System.Data.SqlClient" />
</connectionStrings>
► 載入關聯資料的方式
//Model
public class Genre {
    public string Name { get; set; }
    public List<Album> Albums { get; set; }//關聯資料
}
var genreModel = new Genre { Name = genreName };//此方式, Genre 關聯的 Albums 不會自動連結資料
 
//下方式則一併載入 Albums, 如同 sql 的 left join Album g on(g.Name=genreName)
var genreModel = storeDB.Genres.Include("Albums").Single(g => g.Name == genreName);
關鍵字: 
Free Web Hosting