我正在使用EF 5.0生成POCO实体,并在单独的数据访问层中使用它
我想标记所有实体[可序列化]
如何修改模板以添加Serializable属性?

最佳答案

如果您不想编辑模板,也可以在单独的代码文件中进行此操作-因为partial类很方便。因此,如果此处的类型是Foo命名空间中的BarBazMy.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/

10-12 03:05