0

Entity Framework 5.0b2モデル(SQLサーバーデータベース)のテーブルに基づくMicrosoft Datagridを使用したVS11ベータWPFアプリケーションがあります。(グリッドは、エンティティ フレームワーク モデルからデータ ソースを追加し、そのモデルからデザイン サーフェイスにテーブルをドラッグ アンド ドロップすることによって自動生成されたコードを使用します)。次に、EF5.0 DBContext コード ジェネレーター アドインを使用して、アプリで使用できる DbContext 型を生成しました。

結果は良くありませんでした。修正不可能と思われるコンパイル エラーが発生しました。少なくとも私の試みは事態を悪化させました。データグリッドは DbContext を好まず、共存しません (データグリッドと DbContext の両方が同じデータベースとテーブルに基づいている場合)。おそらくコードジェネレータテンプレートを変更することによって、回避策はありますか?

エラーメッセージは最後に貼り付けます。これに関する助けや洞察をありがとう。

(次の密接に関連する投稿は答えではないことに注意してください。dbcontext を objectcontext に変換できますが、そうすると datagrid を適切に動作させることができないためです。また、objectcontext を dbcontext に変換すると、自動生成されたdbcontext 型: GridView で使用するために DBContext を ObjectContext に変換します)。私はかなり単純な回避策を探しています-すべての型と変換を手作業でコーディングし始めると回避策があると確信していますが、自動生成されたコードの使いやすさを維持したいです-私は忙しくなりたくありませんコードジェネレーターは仕事をすることができますし、そうすべきです。解決策がない場合は、コントロールを ado.net に基づいて作成し、UI 以外のコードのエンティティ フレームワークをそのままにしておくことにします。

エラー
タイプ 'System.Data.Entity.DbSet' を 'System.Data.Objects.ObjectQuery' に暗黙的に変換できません

Documents\Visual Studio 11\Projects\WpfApplication3\WpfApplication3\MainWindow.xaml.cs

エラーの原因となった行 (Microsoft が EF テーブルをソースとしてデータグリッドをドラッグ アンド ドロップして作成): System.Data.Objects.ObjectQuery myTblsQuery = myDbsEntities.MyTbls;

4

1 に答える 1

0

WPF デザイナーでドラッグ アンド ドロップによって生成されたコードは決して優れたものではなく、WPF チームは DbContext で動作するようにコードを更新していません。あなたの最善の策は、他の回答が示唆するようにObjectContextにドロップダウンするか、DbContextでサポートされているはるかに優れたWPFデータバインディングを使用することですが、ドラッグアンドドロップを使用せずにそうすることです.

各 DbSet の Local プロパティは実際には ObservableCollection であるため、DbContext を使用した WPF データ バインディングは非常に簡単です。たとえば、ビュー ソースを次のようにバインドすることになります。

categoryViewSource.Source = _context.Categories.Local;

このブログ投稿には詳細が含まれています: http://blogs.msdn.com/b/adonet/archive/2011/03/14/10138486.aspx

于 2012-03-25T15:32:57.983 に答える