0

私は2つのアプリケーションを持っています:

  1. Manager UI - すべてのフィールド (ユーザー名、電子メール、年齢など) を含むユーザーを作成し、それらを表示できる必要があります。
  2. コア コンポーネント - UserId および Username フィールドのみを必要とし、非常にパフォーマンスが高い必要があります。また、データベースに書き込むこともできません。

UIアプリケーション用とコアコンポーネント用の2つの異なるモデルが必要なようです。最初のモデルを作成すると、人生はうまくいきます。しかし、2 番目のモデルを作成しようとすると、不要なフィールドがすべて取得されます。それらを削除しようとすると、null可能なフィールドに対してのみそれを実行できますが、必要なフィールド(実際には保存にのみ必要です)に対しては実行できません。私が得たものは次のとおりです。

「メール」フィールドをプライベートゲッターおよびセッターとして設定しても、エンティティに値をまったく保存したくない(そしてデータベースからフィールドを取得したくない)ため、私の問題は解決しません-私が言ったように、このアプリケーションは可能な限りパフォーマンスを発揮します。

どういうわけかモデルを読み取り専用に設定できれば、これは解決すると思いますが、それはただの予感です (それを行う方法が見つかりませんでした - ありますか?)

どんな助けでも大歓迎です。ありがとう、ニル。

4

2 に答える 2

0

「読み取り専用」エンティティ モデルなどはありません。ただし、エンティティへの変更が追跡されないように MergeOption 値を設定することにより、読み取り専用クエリを実行できます。クエリでエンティティ型を返す代わりに、匿名型に射影することにより、アプリケーションで必要な列のみを選択することもできます。したがって、両方のアプリケーションで同じモデルを使用しますが、「コア コンポーネント」では、読み取り専用の使用でより優れたパフォーマンスを提供する方法で、モデルを異なる方法で使用します。

于 2009-07-10T15:24:43.753 に答える
0

EF は、特定のユース ケースごとにモデルを生成できるように設計されています。単一の大きなモノリシック モデルを生成する必要はないと想定されています。これは、ビルドと更新が非常に簡単であるためです (いずれにせよ、それが理論でした)。

したがって、ユース ケース シナリオごとに 1 つずつ、2 つのモデルを生成する必要があります。これは、各ユース ケースに絶対に必要なものだけを含める必要があることを意味します。

于 2009-07-11T05:04:17.613 に答える