0

ある DB から別の DB にデータを転送する必要があります。宛先 DB には、ソースよりもはるかに少量のデータが含まれており、各テーブルはソース テーブルの列のサブセットにすぎません。目的の DBML を作成したところ、(目的の DBML の) L2S データ型がソース DBML の L2S データ型と同じであるため、コンパイル エラーが発生します。

これらの型をデータ コンテキスト間で共有する方法はありますか? そうでない場合、宛先 DB に保存する前に各ソース タイプを宛先タイプにマップするマッパーを作成する必要がないように、ソース タイプを宛先タイプとしてキャストする方法はありますか?

明確にするために、ソース DBML には、必要な列のみを含めています。そのため、ソースと宛先の型はまったく同じですが、それらは独自の DBML に属しています。

このまったく同じテーブルが両方の DBML にあります。

ここに画像の説明を入力

この質問は、正しく説明するのに苦労しました。これを尋ねる別の方法は、「ソース テーブルからデータを取得し、それをソース DBML の 1 つの型だけを使用して宛先 DB に保存できますか?」ということです。

4

1 に答える 1

2

@Davidが提案したように、異なる名前空間でDBMLを作成してから、Automapperを使用するか、マッピングを生成するコードを記述します(要件を考えると非常に簡単です)。

これらの型をデータ コンテキスト間で共有する方法はありますか?

いいえ。

そうでない場合、宛先 DB に保存する前に各ソース タイプを宛先タイプにマップするマッパーを作成する必要がないように、ソース タイプを宛先タイプとしてキャストする方法はありますか?

マッピングを作成する必要がありますが、それは非常に簡単です (プロパティの名前、型などは同じです)。Linq2Sql やその他の ORM がなくても簡単だと思います。私見では、すべての制約、FK などを削除し、SQL コマンド レベルでデータをコピーして (このコードを自分で生成)、すべての制約を再作成する必要があります。

于 2012-04-30T19:46:20.990 に答える