2012-04-30 11 views
0

あるDBから別のDBにデータを転送する必要があります。宛先DBにはソースよりもデータ量がはるかに少なく、各テーブルはソーステーブルの列のサブセットにすぎません。私は目的地のDBMLを作成しましたが、L2Sデータ型(宛先DBML内)がソースDBMLのL2Sデータ型と同じであるため、正しくコンパイルエラーが発生します。LinqからSQLへの複数のDBML共有タイプ

データコンテキスト間でこれらのタイプを共有する方法はありますか?もしそうでなければ、ソースタイプをデスティネーションタイプにキャストする方法があるので、デスティネーションDBに保存する前に各ソースタイプをデスティネーションタイプにマップするマッパーを作成する必要はありませんか?

ソースDBMLでは、必要な列のみを含めています。ソースとターゲットの型はまったく同じですが、それらはそれぞれ独自のDBMLに属しています。

これとまったく同じテーブルには、両方のDBMLsである:

enter image description here

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

+0

異なる名前空間にDBMLを作成できますか?それでコンパイルして、うまく使うことができます。その後、(エンティティごとに手動ではなく)より自動的な方法でそれらをマップしたいなら、AutoMapperのようなものがそれを手助けできるはずです。 – David

+0

私は可能ですが、ソースタイプを宛先DBに保存しようとする問題がまだあります。そして、私はそれがテーブルの属性のために動作するとは思わない。 –

+0

私はこれらのフィールドを解読できました –

答えて

2

@Davidは、異なる名前空間にDBMLを作成し、Automapperを使用するか、マッピングを生成するコードを書くことを提案しました。

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

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

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

+0

同意すると、.NETやORMを使わずにこのようなETLプロセスを実行するSQLネイティブの方法があります。 – David

関連する問題