Linq-To-SQLクラスを反映した2つの異なるdbml図があります。(これらは異なるプロジェクトに表示されるため、これが必要です。)一方の図のオブジェクトの1つには、もう一方の図のオブジェクトとの関連付けが必要です。
どうすればいいのですか?
Linq-To-SQLクラスを反映した2つの異なるdbml図があります。(これらは異なるプロジェクトに表示されるため、これが必要です。)一方の図のオブジェクトの1つには、もう一方の図のオブジェクトとの関連付けが必要です。
どうすればいいのですか?
実際には、2つの図は、2つの異なるデータコンテキストが生成されることを意味します。また、ダイアグラムでSqlMetalを使用してエンティティを生成していると思います。
関連するすべてのオブジェクトを1つの図に含める必要があります。そうしないと、datacontextはデータベースからその関係を取得できません。
別のオプションは、カスタムエンティティとXMLマッピングファイルを使用することです。
私自身、この問題について懸念があったため、私の場合はすべてのエンティティを 1 つのコンテキストにまとめました。現在、コンテキストはデザイナーで使用するには大きすぎて複雑です (読み込みに約 20 分かかり、おそらく 100 以上のエンティティがあります)。そのため、代わりに SQLMetal (DBML コンパイラ/ジェネレータのコマンド ライン形式) を使用して構築します。 . DBML 自体は、スキーマを設計するために私が作成したツールで維持 (生成) されています。これはあなたの質問に対する正確な回答ではありませんが、この懸念に対処する 1 つの方法です。
結局のところ、これを達成するために私が見つけた最も簡単な方法は、関係を強制することです. FK を含むクラスに一致する独自の部分クラスを作成し、他の関係で見つけた生成コードを模倣しました。
これには、AFAI が判断できる欠点が 1 つだけあります。実際の外部キー フィールドのset
プロパティに生成されたコードがあり、既に値が設定されているときに値を設定しようとすると、例外がスローされます。
if (this._Parent.HasLoadedOrAssignedValue)
{
throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}
しかし、FK フィールドを明示的に設定するべきではないことを知っている限り、私はそれなしで生きる準備ができています。