asp .net アプリケーションに Entity Framework 4.0 を使用しようとしています。今のところ、古いスタイルのコード ビハインド ファイルで単体テストはありませんが、将来的には MVP と単体テストを使用する可能性がありますが、現時点では問題ありません。データベースファーストのアプローチを使用しています。これがモデルです(画像を投稿するには評判が必要なため、画像を投稿できませんでした)
- 表: アプリケーション (ApplicationID、名前、非表示)
- 表: ユーザー (UserID、ApplicationID、Username、IsActive)
- 表: ロール (RoleID、ApplicationID、Name)
- 表: UserRole (UserRoleID、RoleID、UserID)
私はEntity Frameworkとその使用方法について多くのことを読んできましたが、それでもいくつかのことについて非常に基本的な考えを得ることができませんでした. Application、User、Role、UserRole などのコードはどこに記述すればよいですか?
public List<Application> GetAllUnhiddenApplications()
{
List<Application> applist = null;
using (CustomAppsPortalEntities ctx = new CustomAppsPortalEntities())
{
applist = (from app in ctx.Applications
where app.Hidden == false
orderby app.Name
select app).ToList();
}
return applist;
}
Context と Entities を別々のプロジェクト Project.Data と Project.Entities にそれぞれ分けました。私の質問は、上記のコードが BLL (クラス名 ApplicationBLL) または DLL (ApplicationDLL) に属しているかどうかです。過去 2 日間から、私は多くの SO の質問、ブログ、チュートリアルを検索してきましたが、さまざまな人がさまざまなアプローチをとっています。これが私のジレンマです。
コードをデータ レイヤーに配置した場合、ビジネス レイヤーでは、ApplicationBLL.GetAllUnhiddenApplications のような "パス スルー" 関数を作成する必要があります。この関数は、ApplidationDLL.GetAllUnhiddenApplications を返します。すべてのクエリに対してそれを繰り返す必要があり、基本的に BLL 全体が最終的に DLL の「パススルー」レイヤーになります。上記のスキーマを参照して、どのようなビジネス レイヤが使用されるかの具体例を教えてください。
コードをビジネスレイヤーに配置すると、ビジネスレイヤーにlinqが存在し、最終的にEntity FrameworkによってSQLに変換されるため、クエリロジックをビジネスレイヤーに公開するようなものです。
私たちの環境 私たちの環境はペースが速く、別のレイヤーがある適度に適切なアプローチでこのプロジェクトをできるだけ早く完了したいと考えていますが、将来時間があれば、コードをリファクタリングして本当に堅牢にするかもしれませんが、現時点では問題ではありませんが、時間が許せば、将来的にコードをリファクタリングするのではなく、今すぐベスト プラクティスを実装したいと考えています。