在Model裡使用MetadataType,來預防外加的metadata屬性因為更新而被清掉
在 ASP.NET MVC 使用 Entity Framework DB First 的時候,
因為所有 POCO (Plain Old CLR Object) 類別將會由參考資料庫的架構而自動建立,
而我們會根據需求又自己額外添加一些Metadata上去,但是,
如果資料庫結構有變動需要對Model Class進行更新時,
一旦更新,勢必之前加的Metadata將會被清光,解決的想法如下。
Person.cs
namespace WebApplication1.Models
{
public partial class Person
{
public string id { set; get; }
public string name { set; get; }
}
}
POCO類別要加上partial關鍵字
PartialPserson.cs
using System.ComponentModel.DataAnnotations;
namespace WebApplication1.Models
{
[MetadataType(typeof(PersonPartial))]
public partial class Person
{
}
public class PersonPartial
{
[DisplayFormat(DataFormatString = "{0:MM-dd-yyyy}")]
public string id { get; set; }
}
}
然後在PartialPserson.cs的partial class Person加上MetadataTypeAttribute,
之後,不管POCO類別如何更新,只要將外加的metadata屬性都寫在Partial Class(如PartialPserson.cs)裡,
就不用怕外加的Metadata會被清掉了。
參考資料: