2016年8月5日 星期五

DB first Model更新時, 手動修改的class資料會被清除


如果開發者是使用DB first Model應該都會有這種經驗,我們為了要驗證欄位填寫是否正確,會在model的class中加上一些驗證屬性
public partial class book
{
    [Required(ErrorMessage = "請輸入書名")]
    public string bookName{ get; set; }
}

可是當我們使用開發工具更新Model.edmx時,我們所新增的驗證欄位會被全部清除。以前我索性就不要使用驗證的功能了,自行在前端撰寫驗證程式。或是簡單點,在text屬性中加入required就好了

直到我在書上有看到解決方式

1. 在Model資料夾中新增一個Partials資料夾,並新增一個同名的class(book.cs)














2. 將原本book.cs中的程式複製到Partials.book中
namespace Sample.Models
{
    [MetadataType(typeof(bookMetadata))]
    public partial class book
    {
        public class bookMetadata
        {
             [Required(ErrorMessage = "請輸入書名")]
             public string bookName { get; set; }
        }
    }
}

3. 在建立Partials資料夾時,資料夾中的class的命名空間會自動加上Partials(Sample.Models.Partials)。記得要把.Partials移除,不然不會成功

4. 在編譯時,會將兩個book.cs合成同一個,使用上必須是同一個專案,同樣的命名空間,同樣的class名稱


參考資料:ASP.NET MVC 開發美學



沒有留言:

張貼留言