实体框架4.0自动生成的类未标记为可序列化

时间:2010-05-03 07:08:01

标签: entity-framework t4 poco

我在Entity Framework 4.0 V2自动生成的类(tt)中看到的一个奇怪的事情是类没有标记为Serializable。虽然它们具有WCF的DataContract属性。

现在的问题是,当我将POCO对象存储到viewstate时,它会抛出一个异常,说明该类不可序列化。

如果我生成没有t4模板或使用defualt类生成方案的类,我看到生成的类具有Seri​​alizable属性。

但遗憾的是我无法使用默认的实体生成方案。因为我想为自动生成的类容纳一些自定义逻辑,这只能通过t4模板。

现在我想知道的是:

1)为什么自动生成的类中没有Seri​​alizable属性,或者我犯了任何错误,或者我的方法是错误的。

2)自定义EF 4.0 T4模板以容纳Serializable属性是个好主意。

寻找你宝贵的建议。

谢谢,

Burhan Ghee

2 个答案:

答案 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