2

このプロジェクトでは、DBML ファイルにリンクされた標準の自動生成された designer.cs ファイルがあり、データベース テーブルにマップされるすべてのオブジェクト クラスが含まれています。

これらのオブジェクトを WCF サービスを介して直接渡したいので、必要に応じて [DataContract] および [DataMember] 属性で装飾する必要があります。データベース スキームの変更またはその他の変更時に designer.cs ファイルが再生成されたときに変更が消去されないようにするための最善の方法は何ですか。

部分クラスはオプションですが、DataMember 属性で装飾したいプロパティが自動生成された designer.cs ファイルで既に定義されている場合、同じプロパティ定義を部分クラスに追加することはできません。 2 回定義されています。

4

2 に答える 2

3

DBMLシリアル化モードを単方向に設定すると、クラスと多数のメンバーが必要な属性で装飾されますが、SP1より前に問題であった循環参照を回避するために、一部の関連付けは無視されます。

それらも必要な場合は、完全なSP1互換のDataContract属性を提供するLINQ to SQL T4テンプレート(DataClasses.ttファイルの行data.SerializationMode = DataContractSP1のコメントを解除)を確認し、DBMLの他の部分をC#にカスタマイズできるようにします。 /VB.NETコード生成プロセス。

于 2008-09-18T19:44:27.833 に答える
0

dbml ファイルは部分クラスを提供するため、新しい .cs ファイルを作成し、拡張する部分クラスを定義して、必要な属性でそれを装飾できます。たとえば、次のような生成されたデータ コンテキストがあるとします。

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

別の .cs ファイルで次を定義できます。

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

このようにして、dbml ファイルが再生成されるときにクラスが上書きされることを心配することなく、生成されたクラスを拡張できます。

于 2008-09-18T15:35:32.797 に答える