编辑WCF服务的自动生成的DMBL文件

时间:2008-09-18 14:40:50

标签: .net wcf linq-to-sql dbml

在我们的项目中,我们有一个标准的自动生成的designer.cs文件,链接到DBML文件,其中包含映射到数据库表的所有对象类。

我们希望直接通过WCF服务传递这些对象,因此需要在适当的时候使用[DataContract]和[DataMember]属性进行装饰。执行此操作的最佳方法是什么,以便在更改数据库方案或其他更改时重新生成designer.cs文件时,更改不会被删除。

部分类是一个选项,但是如果我想用DataMember属性修饰的属性已经在自动生成的designer.cs文件中定义,那么我不能将相同的属性定义添加到分部类,因为这意味着属性将被定义两次。

2 个答案:

答案 0 :(得分:3)

将DBML序列化模式设置为单向将装饰类和具有所需属性的许多成员,但是它将忽略一些关联以避免在SP1之前出现问题的循环引用。

如果你想要那些也检查我的LINQ to SQL T4 template提供完全SP1兼容的DataContract属性(取消注释DataClasses.tt文件中的行data.SerializationMode = DataContractSP1),以及让你自定义的任何其他部分DBML到C#/ VB.NET代码生成过程。

答案 1 :(得分:0)

dbml文件提供了部分类,因此您可以创建新的.cs文件,定义要扩展的部分类,然后使用所需的属性进行装饰。例如,如果您生成的数据上下文看起来像

public partial class MyDataContext : System.Data.Linq.DataContext
{
...
}

您可以在单独的.cs文件中定义以下内容:

[DataContract]
public partial class MyDataContext
{
...
}

这样,您可以扩展生成的类,而不必担心在重新生成dbml文件时它们会被覆盖。