5

ASP.NET MVC を使用して、Framework 4.0 と SQL Server 2008 で ERP を構築しています。
質問は、クエリをどこに置くべきかということです。サーフィン中に複数の方法を見ました。それらのいくつかは次のとおりです。

  • Models
  • Separate Files、それは DAL フォルダにあります
  • プロジェクトSeparate DAL

Models調査後にクエリを使用することについて、私はまだ混乱しています。

詳細情報:と ではなく、
単純なクエリ メソッドを使用しています。このプロジェクトも将来的 に変換する計画があります。LinqEntity Framework
Desktop Application

別の質問は、それを使用するとどのようにbusiness Logic機能するASP.NET MVCかということです。

Detail About Project両方とも40~50ページ程度の会社
Website+です。 ユーザーはからサインインすることで入力できます。Online Information System
Info Systemwebsite

閉じるために投票する前に 何かを学ぶことができるようにコメントを残してください。

4

6 に答える 6

6

あなたの質問は、多くの要因に依存するプロジェクトのインフラストラクチャに関するものです。

質問で提供した情報を考慮すると、次のようになります。

将来的には、このプロジェクトもデスクトップ アプリケーションに変換する予定です。

Data Access Layer使いやすさのために、別のプロジェクトにする必要があります。

プロジェクトのインフラストラクチャに関する詳細情報を取得することに興味がある場合は、Microsoft スペイン - ドメイン指向の N 層 .NET 4.0 サンプル アプリをお勧めします。これは十分に文書化されており、エンタープライズ レベルを作成するために必要な多くの情報を提供します。応用。

于 2013-09-04T16:11:34.020 に答える
4

MVC の背後にある考え方はSEPARATIONです。IF ANY ロジックやデータ アクセスをコントローラーに入れる必要はまったくないと思います。私が作成するほとんどのサイトとアプリケーションは最終的に API プロジェクトを使用することになるため、そこに DB アクセスを簡単に投入できます。それは最終的にはあなた次第であり、1 つの質問に帰着します:体系的な解決策が必要ですか?

ほとんどの人にとって扱いにくいテーマですが、私の経験から、より組織化されたソリューション/プロジェクトを持つことで、後でより良い実践ができることがわかりました. 後でデスクトップ アプリケーションに変換する予定なので、API を使用して DAL を別のプロジェクトに移動することを強くお勧めします。この方法では、コードを 1 回記述するだけで済みます。

于 2013-09-04T16:16:46.757 に答える
2

しなければならないというルールはないと思います。誰もが独自のアプローチを持っています。私のアプリケーションでは、Helpers静的ヘルパー クラスを含むフォルダーを作成しています。たとえば、次のように作成しますclass DBLogic

public static class DBLogic
{
   public static List<Clients> GetAllClient()
   {
     //**your query here
      return //**some result
    }
}

クライアントのリストが必要な場合は、コントローラーよりも

public ActionResult Index()
{
  var clients = DBLogic.GetAllClient()

  return View(clients);
}

これが私のアプローチです。私にとっては十分に論理的です。

于 2013-09-04T16:06:43.623 に答える
1

これまでの私の仕事では、すべてのデータベース呼び出しを入れるために個別の DAL プロジェクトを作成しています。小規模なプロジェクトの場合は、別のクラスに入れるだけで問題ないと思います。モデルについてはよくわかりませんが、私には意味がありません。

于 2013-09-04T16:08:16.880 に答える
1

次の手順を含むショッピングカートのシナリオにいるとしましょう。

  1. データベースからカートを取得
  2. 税金を計算する
  3. すべて合計

Project.Core (すべてのドメイン クラスを含む)

public CartItem
{
   public int Id { get; set; }
   public string Desc { get; set; }
}

public CartDetails
{
   public int Id { get; set; }
   public List<CartItem> CartItems { get; set; }
   public Decimal Tax { get; set; }
   public Decimal Total { get; set; }
}

プロジェクト.DAL

public class CartDAL  
{
  public List<CartItem> GetCart(int cartId)
  {
     //execute sql here, get datareader or datatable
     //loop thru the rows and mait into a List<CartItem>

     return List<CartItem>
  }
}

上記のように手動で行うのではなく、Dapper または Massive を調べてください。

http://code.google.com/p/dapper-dot-net/

https://github.com/robconery/massive

プロジェクト.BLL

public class CartBLL
{     
  CartDAL cartDAL = new CartDAL();
  public CartDetails GetCartDetails(int cartId)
  {
     var cartDetails = new CartDetails();
     cartDetails.CartItems = cartDAL.GetCart(cartId);
     cartDetails.Tax = cartDAL.GetCart(cartId);
     cartDetails.Total = cartDAL.GetCart(cartId); 
     return cartDetails;
  }
}

プロジェクト.Web

public class CartController
{
   CartBLL cartBLL = new CartBLL();
   public ActionResult Index(int Id)
   {
       var cartDetails = cartBLL.GetCartDetails(Id);

       // Make a cartViewModel

       View(cartViewModel);
   }
}

プロジェクト.WPF

//Nothing much changes in desktop comapared to Web, just call the BLL stuff and you are set
CartBLL cartBLL = new CartBLL();
var cartDetails = cartBLL.GetCartDetails(Id);
//Populate view

したがって、基本的に、すべてのフロント エンド プロジェクトで BLL を再利用する必要があります。

于 2013-09-04T21:12:33.280 に答える
1

DAL フォルダーを作成するか、別の DAL プロジェクトを作成して、データ アクセス コードを書き込むことができます。

于 2013-09-04T19:15:01.880 に答える