我在Entity Framework 4.0 V2自动生成的类(tt)中看到的一个奇怪的事情是类没有标记为Serializable。虽然它们具有WCF的DataContract属性。
现在的问题是,当我将POCO对象存储到viewstate时,它会抛出一个异常,说明该类不可序列化。
如果我生成没有t4模板或使用defualt类生成方案的类,我看到生成的类具有Serializable属性。
但遗憾的是我无法使用默认的实体生成方案。因为我想为自动生成的类容纳一些自定义逻辑,这只能通过t4模板。
现在我想知道的是:
1)为什么自动生成的类中没有Serializable属性,或者我犯了任何错误,或者我的方法是错误的。
2)自定义EF 4.0 T4模板以容纳Serializable属性是个好主意。
寻找你宝贵的建议。
谢谢,
Burhan Ghee
答案 0 :(得分:3)
是的,您可以修改模板。请查看Adding [DataMember] [DataContract] attributes in Entity Framework POCO Template,了解修复模板所需的确切内容。请特别注意模板中的WriteHeader函数。
答案 1 :(得分:2)
T4模板的目的是允许您自定义。无所畏惧地定制它!您不仅可以自定义模板,还可以自定义模板所基于的edmx文件。 请参阅此http://blogs.msdn.com/adonet/archive/2010/03/05/updated-data-model-designer-extension-starter-kit.aspx