好吧,我正在创建一个WCF服务,它有大量的类与客户端通信,而且这个类也有很多属性。
主要是,这些类是使用edmx中的代码生成器创建的POCO类,我有.tt文件。
要使用这个类和属性,我必须使用DataContract和 DataMember ,所以在每个类中我必须设置 DataContract 并在每个属性中每个类 DataMemeber 。所以这是一项大工作,所以如果我需要对数据库进行一些修改,我必须再次生成tt文件,然后重复工作。
有没有办法自动执行此操作?我使用的是.NET 4.0和EF 4.1。
答案 0 :(得分:1)
Entity Framework Provider有WCF数据服务,可能对您有帮助。
答案 1 :(得分:1)
将.tt文件添加到项目中的重点是,您可以修改模板以满足您的需求。您需要做的就是更改模板,以便将[DataContract]
添加到实体类定义,并将[DataMember]
添加到实体属性定义。
从那里,每次更改数据库时,只需使用“从数据库更新模型”功能,您的实体将自动使用现有模板重新生成代码。
所有这一切,我建议您不直接从您的服务层公开您的数据库实体POCO。您应该真正设计域分离并在服务级别使用消息传递和CQRS类型模式。然后,您只需要一些简单的映射方法,将这些消息/命令之间的数据转换为您的实体。