1

アプリケーションを作成し、データベースファーストアプローチを使用しました。そこで、ADO.netエンティティデータモデルを使用してデータベースをプロジェクトに追加し、その方法でコントローラーを追加しました。いわばモデルがないのではないでしょうか。しかしとにかく、私はコントローラーを追加し、CRUDは各エンティティに自動的に追加されました。

私の問題は、1つのWebページで多くのテーブルのデータを表示したいということです。これはSQLを介して行うことができますが、SQLを使用して必要なデータを取得し、画面に表示するにはどうすればよいですか。

4

2 に答える 2

1

Dave Aの答えを少し構築するには:

個人的には、データベース ファースト EF を使用してこの種の検索を行うのが好きです。

EDMX を構築したら、返してほしいものを模倣したシンプルでわかりやすい POCO を作成します。簡単な例は次のとおりです。

public class ComplexModelFromMultipleTables
{
   List<Car> Cars { get; set; }
   List<Bike> Bikes { get; set; }
   List<Boat> Boats { get; set; }
}

EDMX に反映されるデータベースでリレーションシップを構築したら、お気に入りのパターンを介してプロバイダーでアクセスします。私はより複雑なオブジェクトをマッパーで構築しましたが、単純なパターンを使用することは常に良いことです。

public ComplexModelFromMultipleTables GetObject
using (var db = new DBContext())
{
    var model = new ComplexModelFromMultipleTables
    {
        Cars = db.Cars.Where(x => x.CarType == whateveryouwant).ToList(),
        Bikes = db.Bikes.Where(x => x.anotherproperty == whateveryouwant).ToList(),
        Boats = db.Boats.Where(x => x.something else == whateveryouwant).ToList(),
    }
    return model;
}

コントローラーからこのプロバイダーを呼び出し、ビューを強く型付けします

@model ComplexModelFromMultipleTables

ビューの上部にあります。

于 2013-01-18T03:31:40.850 に答える
0

Entity Model を作成するための EF Code First アプローチについて言及していると思います。

私が正しければ、エンティティ (テーブルにマップされたクラス) をモデルとしてビューに使用するという一般的な慣行と競合しています。

最初にページをスキャフォールディングするとき、エンティティをモデルとして使用することがよくあります。しかし、お気づきのように、それらが適切であることはめったになく、より堅牢なモデルに移行することがよくあります。

1) モデル ディレクトリにクラス ライブラリを作成することをお勧めします。クラスのいくつかのエンティティメンバーを埋め込みます。

たとえば、CustomerActivityModel を Customers、Sales、および Orders のメンバーとして持つことができます。

class CustomeActivityModel
{
      Customers CustomerList { get; set; }
      Sales SalesList { get; set; }
      Orders OrdersList { get; set; }
}

コントローラー内で、それらを設定します

   ViewResult Index()
{
   CustomeActivityModel Model = new CustomeActivityModel();
   Model.CustomerList EFContext.Customers;
   Model.SalesList EFContext.Sales;
   Model.OrdersList EFContext.Orders;
   Return View(Model);
}

または、EF の Linq 機能を使用して、キー関係を持つエンティティを含めることができます (Sales が Customers と Orders の外部キーを持っていると仮定します)。

   ViewResult Index()
{
   Model = EFContext.Sales.include("Customers").include("Orders");
   Return View(Model);
}
于 2013-01-18T00:05:24.450 に答える