我正在使用EF 5.0生成POCO实体,并在单独的数据访问层中使用它
我想标记所有实体[可序列化]
如何修改模板以添加Serializable属性?
最佳答案
如果您不想编辑模板,也可以在单独的代码文件中进行此操作-因为partial
类很方便。因此,如果此处的类型是Foo
命名空间中的Bar
,Baz
和My.Namespace
,则可以在同一项目中使用以下命令创建一个单独的文件:
using System;
namespace My.Namespace {
[Serializable] partial class Foo {}
[Serializable] partial class Bar {}
[Serializable] partial class Baz {}
}
然后,将使用
[Serializable]
属性将其与生成的一半合并。它还将允许您将自己的方法添加到类型中,或为模板声明的任何partial
方法实现提供主体。但是,我应该提醒您:
[Serializable]
建议您使用BinaryFormatter
;这不一定是一个好的候选人。最好看一下基于契约(Contract)的序列化器。如果EF模板还没有选项来输出DataContractSerializer
(特别是[DataContract]
/[DataMember]
)的属性,我会感到非常惊讶。在对软件进行版本控制时,BinaryFormatter
可能会出现很大问题。关于c# - 如何在由Entity Framework 5.0生成的所有实体中添加可序列化的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16811223/