0

チュートリアルを読んでいたところ、エンティティ タイプを使用してプロジェクションにマッピングするべきではないと書かれていました。したがって、次のようなものは許可されません (product はエンティティによって作成されたクラスです)。

from p in db.Products
               where p.ProductID== ProductID
               select new Product { Name = p.Name};

したがって、次のような新しいクラスを作成します。

public string Name { get; set; }

次に、次のようなクエリを使用します。

from p in db.Products
            where p.ProductID == ProductID
            select new SomeNewClassName { Name = p.Name });

これは本当に必要ですか、それとも余分な作業ですか? このクラスを作成すると、エンティティ オブジェクトとまったく同じプロパティを保持することになります。必要な場合は、この新しいクラスで使用する命名規則を教えてください。これは、私の Entity クラスとほとんど同じだからです。また、エンティティ オブジェクトを使用して、ASP.net MVC プロジェクトで厳密に型指定されたビューを作成しないでください。

4

1 に答える 1

5

つまり、実際のエンティティ タイプをプロジェクションとして使用したくないということです。たとえば、Person エンティティから Address エンティティに投影しないでください。

プロジェクションとは、結果を元の結果とは異なるものに「整形」していることを意味します。単純に元のエンティティを返す場合、それは射影ではありません。これを行うだけです:

from p in db.Products
        where p.ProductID == ProductID
        select p;

ビューに関しては、いいえ。一般に、エンティティをビューに直接渡すべきではありません。哲学的およびセキュリティ上の理由から、そうすべきではない理由がいくつかありますが、ほとんどの場合はそうではありません。概念実証を作成している場合、またはそれが些細な内部アプリである場合は、それを回避できる可能性がありますが、インターネットに接続しているアプリはそうではありません。

エンティティとまったく同じであっても、別のビュー モデルを作成する必要があります。余分な作業であることはわかっていますが、長い目で見れば、エンティティとは異なるビューモデルが必要になる可能性があり、さらに作業をやり直す必要があるため、成果が得られます。

于 2013-03-27T18:47:57.720 に答える