0

エンティティフレームワークを使用して、データベースエンティティからObservableCollectionにコレクションを割り当てることは可能ですか?

これは、これまでivが試したものです。コンストラクターを使用してリストをObsrvableCollectionに変換しようとしましたが、LINQではパラメーターを受け入れるコンストラクターは許可されていません。

ToObservableコレクションと呼ばれるIenumerableの拡張機能を作成していますが、EFはこれを認識しません。

これに対する他のエレガントな解決策はありますか?以下に私が使用しているコードがあります...そして失敗します

using (var db = new clientEntities())
{
                var data = from p in db.CLIENTs
                           select new Contracts.Client()
                                      {
                                          ClientID = p.CLIENT_ID,
                                          FirstName = p.FIRST_NAME,                                          
                                          PayInfo = new ObservableCollection<PayInfo>(p.PAY_INFO.Select(n=> new PaymentInfo(){ 
                                              PayID=n.ID                                                    
                                              }))
                                      };
    }

PayInfofieldはObservableコレクションです。一時変数を使用せずにエレガントに割り当てることは可能ですか?

4

1 に答える 1

2

LINQ to Entities/SQL を従来の LINQ と混同しているようです。EF を使用している場合は、記述したすべての LINQ クエリを SQL に変換する必要があることに注意してください。したがって、SQL データベースから返されたデータに対して実行する必要があるオブジェクト変換は、EF によって直接サポートされる必要があります。これには、ToList()、ToArray() などが含まれますが、独自のカスタム拡張は含まれません。

ここでできる最善の方法は、最初にデータベースにクエリを実行し (クエリが実行されるように ToList() を使用できます)、その結果のリストを ObservableCollection のコンストラクターで使用する (または ToObservableCollection() 拡張メソッドを呼び出す) ことだと思います。

于 2012-05-17T21:27:46.690 に答える