2009年、私は最も古いVB6アプリケーションの大規模な書き直しを開始しました。私は、.NET 3.5にあるWCFサービスを作成して、SQL Server 2005データベースからデータを取り出し、そこに格納することから始めました。 VB6で書いた同様のCOM +コンポーネントは、ネットワーク経由でデータを配列として転送しています。 2009年に私は代わりにADO.NET DataSetsを使用すると考えました。ローカルにデータを保存するより良い方法はありますか?
3年前までの早送り。このように、私は2009年にこのプロジェクトを開始しましたが、その他の緊急プロジェクトや課題は、常にそれをバックバーナーに押し付けました。さて、私はどこで中断したのかを考えようとしています。私たちの設計は、バックエンドのSQL Serverデータベースからデータを取り出し、それをSQL Expressデータベースにローカルに格納することです。
ユーザーのマシン上のアプリケーションは、ローカルのSQL Expressデータベースに対して実行され、ユーザーが終了するとバックエンドサーバーにのみ転送されます。ユーザーは仕事場に出て、データをアップロードする前にかなり長い時間(数ヶ月)失踪する可能性があります。この中で私はエンティティフレームワークを学び、ローカルデータストアに対して使用しようとしています。
エンティティオブジェクトなどに対してLINQを使用するというアイデアは素晴らしいですが、私の古いWCFサービスによってもたらされたデータセットからのデータ転送を迅速にコーディングする方法には苦労しています。ローカルエンティティクラス。私は返されたデータセット/データテーブルから各テーブルの各列を描くことができますが、WOW、それは多くの作業です!
これを行う方法はありますか?
私はAutoMapperについて聞いたことがありません。リンクをありがとうございます。明確にするために、WFFサービスからいくつかのテーブルを取得しました。これらのテーブルは、EFエンティティにマップする必要があります。私はMapper.CreateMap <>とMapper.Map <>をそれぞれ同じルーチンで実行しますか?それとも、それが自分のルーチンであるかのどちらが良いでしょうか?私はMapperオブジェクトのスコーピング、文脈などを少しは確信しています。 – Rod
@Rod、各エンティティに対して 'CreateMap'を呼び出す必要があります。エンティティマップへの 'DataTable'が1対1でない場合、いくつかの設定を行う必要があります(私は常に物事を単純にしていますので、' CreateMap'を呼び出す以外に多くのことをする必要はありませんでした。 Webサイトおよびサンプルコードを参照してください)。私はマッピングが静的であると信じているので、あなたのクライアントではすべてのマップを1か所で行うことができます。 –
ありがとうございました。 – Rod