2012-05-01 7 views
1

モデルの1つに関連する別のテーブルから取得するデータのリストを格納する必要があります。 (この関係をDBに追加するには、あまりにも深く構築しなければなりません。)このリストを必要とするモデルのプロパティにロードしようとするとき。モデルメンバーを無視するにはEntity Frameworkが必要です

このリストをビューのドロップダウンにロードします。コントローラのモデルにこのリストをロードしようとすると、エラーが発生します。実際の注意点は、ビューのテーブル内の各レコードの一意のドロップダウンリストがあることです。

私たちのクラス:

Public class OurModel 
    public property ID As Integer 
    Public property First As Integer 
    Public property Last As Integer 
    Public property myList As List(Of SelectListItem)//This is our problem member 
End class 

コントローラー:

      //This ViewModel is what we pass around from page to page to populate the various elements we need that is not tied to a specific model 
Public Function LoadList(myViewModel As ViewModel) As Action Result 
    Using db //our database resource 
    For i As Integer = 0 to myViewModel.OurModel 
     //Assume table select statement previously declared and initialized into dbGet 
     **NOTE: dbGet is retieving data from a different table that is tied to this Model** 
     dbGet = dbGet.Where(Function(x) x.ID = myViewModel.OurModel.ID) 
     myViewModel.OurModel.myList = dbGet.ToList().[Select](Function(x) New SelectListItem() With {.Value = x.number, .Text = x.number})//ERROR IS HERE 
    Next 
    End Using 
End Function 

エラー:メソッド 'DB.ModelTable get_Item(Int32)を' メソッドを、認識していない事業​​体へ

LINQとこのメソッドをストア式に変換することはできません。

UPDATE:問題は、LINQは、私はこのコントローラで以前に行うクエリのDBContextで何かをやろうとしていることであるように思われます。エラーはDB.Employeeではなく、私が照会しているものであるDB.Positionを参照しています。

答えて

-1

エンティティフレームワーク以外のデータベースに接続する新しいクラスを作成する必要がありました。 Entity Frameworkを使用する場合は、アプリケーションを構築して幸運を祈る前に、データベース設計が完璧であることを確認してください。

3

VB.Netではほとんど何もしていませんが、get_Item(Int32)はC#のインデクサーと同じかもしれません。

エンティティフレームワークでインデクサーを含むクラスがサポートされていないというよく知られた欠点があります(そのプロパティーをNotMappedで飾っても)。

ロック可能なObservableCollectionを実装するのと同様の問題が発生しました。 indexer issue in EFのためにIList<T>を実装できないことがわかりましたが、ICollection<T>を実装できました。

Lock/Unlock ObservableCollection<T>

あなたは、この問題を解決する必要がありますコレクションのものとリストのセマンティクスを置き換えることができます。

+0

これをモデルに入れると、同じエラーが発生します。私は、このモデルをビューモデルに入れることはできないと思います。なぜなら、「インデックス可能」ではないため、モデルリストの特定のインスタンスに関連付けることができないからです。 – ExceptionLimeCat

+0

これをViewModelまたはViewBagに格納しようとすると、同じエラーが発生します。 EFはリストのコンセプトのリストが気に入らない。 – ExceptionLimeCat

関連する問題