3

アプリケーションを作成する予定ですが、どのフレームワークを使用すればよいかわかりません。私が働いていた場所では、ntiers を codesmith と一緒に使用していました。nettiers は無料ですが、codesmith ではありません。Entity Framework のことは知ったのですが、その使い方は「リポジトリ パターン」と呼ばれるものを使用するということも読みましたが、これを使用することに多くの疑問があります。私には大きな予算がなく、自分だけが、更新、削除、作成機能を備えたクラスを自動的に作成し、実装するコードを残す高価なツールを購入する余裕がありません。だから私はどのように行くべきか分かりません.エンティティフレームワークに行くべきですか(これは唯一の無料ですか?)、それとも私が使用できる何か他のものがあります.おそらくそれほど高価ではありませんが信頼できます.

私が期待しているように、これについての良いアドバイスを本当に感謝しています.

PS: エンティティ フレームワークとリポジトリ パターンが最適な選択である場合は、それを使用します。

C#、Asp.net、MSSQL 2008 を使用。

4

3 に答える 3

4

コード ファーストと自動移行を備えた Entity Frameworkは、使用できる最も簡単な ORM の 1 つです。柔軟性があり、Microsoft スタックで十分にサポートされており、データベースを開発する最速の方法の 1 つであるコード ファーストを使用します。

最初に Entity Framework コードを使用して、データ モデルを通常の C# クラスとして定義します。これは Product テーブルに対応します。

public Product {

   public int Id { get; set; }
   public string Name { get; set; }
}

データベース コンテキストを作成します。

public MyDbContext : DbContext {

    public DbSet<Product> Products { get; set; }
}

接続文字列を Web.config に追加し、パッケージ マネージャー コンソールでコマンドを実行します。

>Enable-Migrations –EnableAutomaticMigrations
>Update-Database

これで、Products テーブルを含む機能データベースが作成されました。クラスに変更を加えたら、Update-Database をもう一度実行するだけで、スキーマが移行されます。

新しい製品を追加するには:

using (var db = new MyDbContex()
{
    Product product = new Product() { Id = 1, Name = "Tablet" };

    db.Products.Add(product);

    db.SaveChanges();
}

データのクエリは次のように簡単になります。

using (var db = new MyDbContex()
{
    // get product with id == 1
    Product product = db.Products.Single(p => p.Id == 1);
}

リポジトリ パターンに関しては、単なる設計パターンです。リポジトリ パターンにはさまざまなバリエーションがありますが、実際にはデータ ストアをデータ アクセス レイヤーから分離することが重要です。これにより、存在する外部データベースに依存する必要がなく、単体テストが容易になります。

コメントから編集: EF とストアド プロシージャを使用する方法はいくつかあります。Entity Framework Code First はストアド プロシージャをサポートしていますか?を参照してください。およびストアド プロシージャを使用してデータを挿入する

于 2012-11-27T04:39:21.563 に答える
2

選択できる別のリストは次のとおりです。

データ層: Ibatis.Net または NHibernate (ほとんどの場合、CURD には NHibernate、必要に応じてクエリには IBatis.NET の両方を使用しました。たとえば、SP の呼び出し、動的なクエリ)。

Spring.Net : IoC ヘルパー

Asp.NET MVC: MVC フレームワーク。

利点: IBatis、NHibernate、および Spring.Net は Java バージョンと非常に似ているため、それらのドキュメントを多数見つけることができます。

私が言えることは、優れた ORM (EF、Nhibernate、または Ibatis) を備えた 3 層は、複雑なプロジェクトのベスト プラクティスであり、保守と協力が容易であるということです。プロジェクトが非常に単純な場合、LINQ + WebForm は数時間で役立ちます。MVC をまったく放棄することができます。

于 2012-11-27T04:14:36.647 に答える
2

それはすべて、開発者としての立場と、何をしたいかによると思います。コストに関しては、Entity Framework は Visual Studio で無料です。Fluent NHibernate は EF と非常によく似ており、Oracle、MySql、および MSSQL でも動作し、nu get を介して非常に簡単に取得できます。

リポジトリ パターンは、コレクションを取得するための単なるパターンです。

どちらの ORM にも長所と短所があると思います。

于 2012-11-27T04:19:59.377 に答える