Entity Framewoek--如何序列化各entity

  • 2162
  • 0

摘要: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; }
  }