0

Entity を使用して DataBase に接続しました: Entity db = new Entity(); ... 次に、DataGrid を Form に追加し、DataBase からテーブルを受信しようとしました

var pp = from asd in db.ABONENT select asd;

MyDataGrid.ItemsSource = pp.ToList();

結果はこちら: スクリーンショット

他のリンクされたテーブルから他のフィールドを表示するのはなぜですか? ABONENT テーブルからのみデータを表示するには?

4

3 に答える 3

1

私の推測では、DataGrid を使用してすべてのテーブルの内容を表示していると思います。列定義は静的ですか、それとも動的にロードされますか?

動的な場合は、すべてのデータ バインディング間のすべての列を削除することをお勧めします。

静的な場合は、表示したくない列を非表示にします (Visible = false)。

于 2012-12-03T20:35:09.447 に答える
1

Entity Framework には がありますがEntities、 はありませんTables。Entity Framework は、テーブルのリレーショナル概念をアプリケーション内で使用するオブジェクトに抽象化します。それが ORM の機能です。

このため、テーブル間のリレーションはエンティティ内で と呼ばれるものとして表現さNavigation Propertyれます。これは基本的に、関連付けられたエンティティを表すエンティティ クラス内のプロパティです。

私のポイントは..テーブルを直接UIに公開するつもりなら、なぜORMを使用するのですか?. そのためにプレーンな古い ADO.Net を使用するか、テーブル全体をユーザーに直接公開しないように UI を定義します。ユーザーはテーブルについて何も知りません。ユーザーは自分のビジネスを理解しています。したがって、アプリケーションはテーブルについて何も知らないはずです。

これは UX の観点から見ると悪い習慣だと思います。たとえば、ユーザーが abonentID や RegionID などの Id 列を UI に表示する必要があるのはなぜですか?? 彼らはそれを気にしませんし、理解もしていません。行 ID は RDBMS の概念であり、ビジネスの概念ではありません。

私の提案: アプローチを再考してください: 普通の古い ADO.Net を使用するようにフォールバックするかAutoGenerateColumns、DataGrid で を false に設定して、ユーザーが関心のある列のみを公開します。

于 2012-12-03T20:40:18.737 に答える
0

次の構文を使用して、エンティティの公開プロパティを選択できます。

var pp = from asd in db.Products
            select new
            {
                asd.Id,
                asd.Name,
                ProductCategory = asd.ProductCategory.Name,
            };
MyDataGrid.ItemsSource = pp.ToList();
于 2012-12-03T22:43:38.973 に答える