2012-02-15 16 views
1

可能なベストプラクティスでこの新しいプロジェクトを開始したいと思います。私は一緒にリンクされているテーブルがたくさんあります。例:ビューを扱う最良の方法

Person 
- ID 
- FirstName 
- LastName 

User 
- ID 
- PersonID 
- AddressID 

Address 
- ID 
- Line1 
- Line2 

もちろん、私は、アプリケーションで効率的にUserViewビューを使用する必要があります。ビューはこれら3つのテーブルをまとめて表示します。

誰かがユーザーを変更すると、3つのテーブルすべてを個別にクエリし、変更してから更新する必要があります。

private void updateUser(UserView userView) 
{ 
    using (var context = getNewContext() 
    { 
     var person = context.Person.first(c => c.ID == userView.PersonID) 
     person.FirstName = userView.FirstName; 
     person.LastName = userView.LastName; 
     context.SaveChanges(); 

     var user = context.User.first(c => c.ID == userView.UserID) 
     //and so on for the 3 tables 
    } 
} 

さらに効率的なテーブルの更新方法が必要です。あなたはどんなトリックを知っていますか?

+0

WPFまたはWinForms? – Nicolas

+0

この場合、DLLはありません。一般的にWinform。 – Mathieu

答えて

1

あなたはエンティティフレームワークを使用していると仮定します。ナビゲーションプロパティを持っている場合、オブジェクトグラフをデータベースに一度に読み込んで、フィールドを更新して保存することができます。

var user = context.User.Include("Person").Include("Address").First(c => c.ID == userView.UserID); 
user.Person.FirstName = userView.FirstName; 
user.Person.LastName = userView.LastName; 
user.Address... // etc. 

Linq2Sqlを使用している場合は、DataLoadOptionsを使用する必要があります。 EFとLinq2Sqlの違いを説明するblog postがあります。

+0

見た目の良い選択肢のように聞こえます!その提案をありがとう! – Mathieu

関連する問題