1

モデルの1つに関連する別のテーブルから取得したデータのリストを保存する必要があります。(ビルドが深すぎて、DBにこの関係を追加する必要があります。)このリストを必要とするモデルのプロパティにこのリストをロードしようとしたとき。

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

私たちのクラス:

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

エラー:

LINQ to Entitiesは、メソッド'DB.ModelTable get_Item(Int32)'メソッドを認識せず、このメソッドをストア式に変換できません。

更新:問題は、LINQが以前にこのコントローラーで行ったクエリのDBContextを使用して何かを行おうとしていることのようです。エラーは、私が照会しているものではDB.Employeeなく、参照しています。DB.Position

4

2 に答える 2

3

VB.Netではほとんど何もしていませんが、get_Item(Int32)はC#のインデクサーと同じである可能性があります。

Entity Frameworkがインデクサーを含むクラスをサポートしていないというよく知られた欠点があります(そのプロパティをで装飾した場合でもNotMapped)。

私は同様の問題に直面しました。それは、ロック可能なObservableCollectionを実装することでした。EFIList<T>のインデクサの問題のために実装できませんでしたが、実装できました。ICollection<T>

ObservableCollection<T>をロック/ロック解除します

リストのセマンティクスをコレクションのセマンティクスに置き換えることができれば、この問題は解決するはずです。

于 2012-05-01T00:11:53.890 に答える
-1

EntityFrameworkの外部でデータベースに接続する新しいクラスを作成する必要がありました。Entity Frameworkを使用する場合は、アプリケーションの構築を開始する前に、データベースの設計が完璧であることを確認してください。

于 2012-05-01T20:28:10.713 に答える