web-dev-qa-db-ja.com

モデルとエンティティの違いは何ですか

私はこの言葉の意味が何であるかを理解するのに混乱しています:

EntityModelDataModelViewModel

どんな体でも私を理解するのに役立つことができますか?皆さん、ありがとうございました。

44
agent47

私はここでking.netであなたのポイントを見逃していないことを願っています.

とにかく、エンティティモデリングまたはエンティティ関係モデリング(ERD)について話していると仮定します。

  • エンティティは、実世界のエンティティを表します。学生、コース、
  • エンティティには属性があります-例:学生には名、姓、生年月日があります
  • エンティティには関係があります-例学生は「登録されている」コース(学生とコースは属性を持つエンティティであり、「登録されている」は関係です).
  • 関係は「1対1」、「1対多」、または「多対多」です。 1人の学生が多くのコースに「登録」されており、同様に1つの学生が多くのコースを「持っています」。
  • 関係にもカーディナリティがあります

エンティティ間に関係を追加すると、「データモデル」が作成されます。現実世界のシステムとそのシステムの内部エンティティ/オブジェクトをモデリングしました。次のステップは、それを正規化して「通常の形式」に適合させることです。

ERDの用語では、「論理」モデルと「物理」モデルがあります。論理は、データモデルを実装するために必要な技術的詳細を提示する単純で高レベルの用語でデータモデルを説明します。システムソリューションの概要を表します。物理モデルには、システムを実際に実装するために必要な技術的な詳細(「多対多」の関係を実装するために必要な「多対多の結合テーブル」など)が含まれます。

オンラインのチュートリアルは次のとおりです(ただし、数千個あるはずです)。

関連するコンテキストでの「モデル」と「モデルの表示」の意味がよくわかりません。これをModel-View-Controllerパラダイム(MVC)と混同しているかどうかはわかりません。ここで、モデルはデータコンポーネントであり、ビューはそのデータのオブザーバー(テーブルまたはグラフUIコンポーネントなど)を表します。 「model view controller」または「MVC」を説明するオンラインがたくさんあります。

これがお役に立てば幸い、ウェイン

35
wmorrison365

これらの用語の定義は非常にあいまいです。さまざまな場所でさまざまな定義が見つかります。

Entity:エンティティは、データベースオブジェクトにレコードとして保存されたドメインオブジェクトの単一インスタンスを表します。テーブルの列として表すいくつかの属性があります。

Model:モデルは通常、問題またはドメイン空間に関連する実世界のオブジェクトを表します。プログラミングでは、オブジェクトを表すクラスを作成します。モデルと呼ばれるこれらのクラスには、いくつかのプロパティとメソッドがあります(オブジェクトの動作を定義します)。

ViewModel:ViewModelという用語は、[〜#〜] mvvm [〜#〜](モデルビューViewModel)デザインパターン。ビューによってレンダリングされるデータが2つの異なるオブジェクトから取得される場合があります。このようなシナリオでは、ビューに必要なすべてのプロパティで構成されるモデルクラスを作成します。ドメインモデルではなく、ViewModelです。特定のビューで使用されているためです。また、実世界のオブジェクトを表していません。

DataModel:問題を解決するために、オブジェクトは相互作用します。一部のオブジェクトはそれらの間の関係を共有し、その結果、オブジェクトとそれらの間の関係を表すデータモデルを形成します。

たとえば、顧客の注文を管理するアプリケーションでは、顧客と注文のオブジェクトがある場合、これらのオブジェクトは多対多の関係を共有します。データモデルは、最終的にはオブジェクトの相互作用に依存します。データベースでは、データモデルは他のテーブルを参照するテーブルのネットワークと見なされます。

オブジェクト関係の詳細については、次を参照してください。 オブジェクト関係の基礎

詳細については、 Entity vs Model vs ViewModel vs DataModel をご覧ください。

35
Gaurav Gahlot

まず、エンティティについて知るには、クラスについて知る必要があります。それらはすべて同じフィールドを表しますが、用語は宣言に基づいて変わります。

例として、任意のデータベース[SQL、Oracle、Informix、Cassandra ..]のテーブルを考えてみましょう。

クラス:

通常、テーブルは、edmxまたはdbmxに追加されるまでクラスと見なされます。

 //Student class
        public class Student()
        {
        //Properties
        public int StudentNumber;
        public string StudentName;
        }

エンティティ:

  • テーブルをdbmx/edmxにドラッグドロップ/追加した後、エンティティと呼ばれます。

  • 各エンティティは、対応するクラスから生成され、エンティティを使用して操作を実行するために使用される属性を追加できます
    linqまたはエンティティ。

データ・モデル:

  • テーブル内のすべてのフィールドが含まれます。

  • DATAMODELはcshtmlまたはコントローラーへの直接のクラス参照であり、属性にアクセスしてCRUD操作を実行できます。

ビューモデル:

  • 複数のモデル(テーブル)でCRUD操作を実行する必要がある状況が発生します。
  • そのため、必要なすべてのモデルをクラスに結合し、コンストラクターで定義します。

例:想定してみましょう

//Student class
public class Student()
{
//Properties
public int StudentNumber;
public string StudentName;
}
//Marks Class
Public class Marks()
{
public int Maths;
public int Physics;
public int Chemistry;

//Now sometimes situations occur where we have to use one datamodel inside //other datamodel.
public Student StudentModel;
}
3
Ravi Kiran

エンティティ:

エンティティは、Entity Frameworkとしてのオブジェクトリレーショナルマッピング(ORM)内の実世界の要素の表現です。この表現はデータベースのテーブルにマップされ、その属性は列に変換されます。エンティティは、C#の次の例に示すように、単純なクラスであるPOCOクラスを使用して記述されます。

using System;
using System.Collections.Generic;
using System.Text;

namespace MyAplication.Entity
{
    public class Person
    {
        public long PersonId { get; set; }
        public string Name { get; set; }
        public short Age { get; set; }
    }
}

UI作成の操作は複雑なタスクです。物事を整理するために、プログラマーはアプリケーションをレイヤーに分離します。

各レイヤーはタスクを担当し、これによりコードが混乱するのを防ぎます。このシナリオでは、MVCやMVVMなどのアーキテクチャパターンが表示されます。

モデル:

MVC内には、以前に保存されたデータを表す層があります。これは、前の例でモデル化された人物のインスタンスです。この層がモデルです。このテンプレートは、ビューの構築に使用されます。

ViewModel:

MVVMアーキテクチャのViewModelは、MVCアーキテクチャのモデルによく似ています。ただし、ViewModelは、ビューの構築に必要な情報のみを含むデータの単純化された表現です。

using System;
using System.Collections.Generic;
using System.Text;
using MyAplication.Web.ViewModel.BaseViewModel;

namespace MyAplication.Web.ViewModel.Person
{
    public class PersonNameViewModel : BaseViewModel<string>
    {
        //I just neet the name
        public string Name { get; set; }
    }
}

データ・モデル:

実世界のエンティティを表す要素間に存在する関係を確立するのは、単なる抽象モデル(このモデルはMVCレイヤーモデルとは異なります)です。これは非常に包括的なテーマです。

2