1

linqtoentitiesを使用してlinqクエリで埋められたdatagridviewからSQLデータベースを更新する方法を理解するのに苦労しています。

3つのテーブルからデータを取得します。次のクエリを使用したアイテム、ミッション、およびlinkMissionItem:

var itemList = from x in me.LinkMissionItem
    join i in me.items on x.itemID equals i.itemID
    join m in me.Missions on x.missionID equals m.MissionID
    where m.MissionNo == selectedMission
    orderby i.categoryID, i.name
    select new { i.itemID, 
                 i.name, 
                 x.Role, 
                 i.Type.typeName, 
                 i.Category.categoryName, 
                 i.model, 
                 i.serialNo, 
                 i.Origin.originCountry, 
                 i.cost, 
                 x.Packaging };

クエリが、3つのテーブルすべてからいくつかの列を取得し、それを次のようにdatagridviewにバインドする匿名型を提供することを理解しています。

dgvMissionItems.DataSource = itemList.ToList();

datagridviewを読み取り専用にします。ちなみに、私は現在、パッケージングフィールドをプログラムで更新していますが、問題ありません。

ただし、datagridviewを使用することの優れている点は、個々のセルを編集してデータを追加または変更できることです。ユーザーがlinkMissionItemテーブルのRoleフィールドを編集できるようにする必要があります。datagridviewにエンティティLinkMissionTableのみを入力すると(変更可能になります)、ユーザーの情報はわかりにくく、不明確になります。

私はこの問題を誤解しているか、おそらく間違った方法で攻撃しており、仕事を成し遂げる方法についてのアドバイスを切実に必要としています。私はまだインターネットやこのテーマに関する本で何も見つけることができていません。

4

1 に答える 1

0

エンティティ全体を(必要な関連エンティティとともに)取得する必要がありAutoGenerateColumnsますが、DataGridViewの機能を無効にします。次に、エンティティとグリッドのデータソース間のリンクを新しいオブジェクトに再パッケージ化して解除するのではなく、ユーザーに表示する列のみを定義します。

于 2013-02-27T07:40:46.770 に答える