摘要:Entity Framewoek--如何序列化各entity
Abstract:
這其實不是一個很罕見的或困難的問題,許多論壇或者網路寫手都曾經寫過類似的文章,
所以PO這個文章也只是當做一個小記,方便以後找東西比較快速有效率。
Situation:
(1)
就如同大家所知,Entity Framework如果要刷新時,其實是會把所有partial class都給重新產生,
所以針對這些類別定義修改的內容都會被drop掉,必如說[Serializable],在刷新時就會消失不見。
(2)
另一種狀況就是,全部的class類別"都"想要加入某特定屬性,當然以上的[Serializable]標記也可以
算是其中之一
解決方法:
其實Entity framework就是一個Code Generator,所以我們只要修改其產生的腳本(.tt)就可以產生我
們所要的結果,其腳本如下:
在.tt檔中,找到以下方法EntityClassOpening
public string EntityClassOpening(EntityType entity)
{
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1}partial class {2}{3}",
"[Serializable]"+"\r\n"+Accessibility.ForType(entity),
_code.SpaceAfter(_code.AbstractOption(entity)),
_code.Escape(entity),
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
}
修改產生pattern紅色標記部份。
重新產生結果如下:
[Serializable]
public partial class Apply
{
public string ApplyIdn { get; set; }
public int CaseNo { get; set; }
}