1

Visual Studio 2010 を使用して Windows アプリケーションを .Net ベースのブラウザーに変換しています。データベース内の各テーブルのクラスを作成し、名前空間の下に配置したいと考えています。クラス名はテーブル名と同じになるため、名前空間の各クラスは CompanyName.ProductName.Entity.{table name} のように参照されます。今私の質問のために:

これは実現可能ですか?

テーブル クラスごとに個別のプロジェクトを作成しますか? より多くのプログラムが変換されると、新しいテーブル クラスが作成されることに注意してください。

これは 1 つの巨大な .dll を作成しますか?

他の開発者は私が作成したクラスにどのようにアクセスし、Using ディレクティブでクラスを参照できるようにどこに保存されていますか?

4

3 に答える 3

0

私が探していた簡単な答えは、デフォルトの名前空間として自分の名前空間を使用して1つのソリューションを作成することです。ファイルごとに新しいクラスを作成し、それぞれに名前空間を指定します。回答してくれたすべての人に感謝します。

于 2012-05-10T14:00:18.347 に答える
0
  1. テーブル クラスごとに個別のプロジェクトを作成しますか?
    いいえ、テーブル クラスごとに個別のプロジェクトを作成しないでください。それは粒度が高すぎます。
  2. これは 1 つの巨大な .dll を作成しますか? 各プロジェクトは、デフォルトで個別の DLL を作成します (IL マージを使用して変更できると思います)。ただし、各名前空間は DLL と直接的な関係はありません。つまり、1 つの DLL に複数の名前空間を含めることができます。

私たちが通常行ってきたことは、DAL ライブラリの作成です。これは独自のプロジェクトで、通常は のような名前が付けられ、その中にまたはProductName.Dataのような名前空間がある場合があります。ProductName.Data.ModelsProductName.Data.Repositories

名前空間は主に、コードを整理するために使用されます。また、コンパイラも支援します。たとえば、 という名前のデータベース クラスがUsersあり、それがにある場合、別の名前空間にある場合XYZ.Dataは、 という名前のビュー モデルを引き続き使用できます。UsersXYZ.ViewModels

私たちが行ったもう 1 つのことは、同じ製品の DLL 間でルート名前空間を同じに保つことです。そのため、最近データベースをXYZ.Data. 次に、アプリケーション固有のロジックを別の DLL に入れ、名前を付けました。XYZ.AppLogic 名前空間にはビュー モデルもありましたXYZ.ViewModels

名前空間の数を制限する厳格な規則があるとは思いません。デフォルトでは、Studio はプロジェクト内の各フォルダーに新しい名前空間を作成しようとします。そうは言っても、ファイルの先頭に次のようなものを見たくないので、名前空間の過負荷を避けるようにすることがよくあります。

using XYZ.Data.Models.Accounts;
using XYZ.Data.Models.Users;
using XYZ.AppLogic.Authentication;
using XYZ.AppLogic.Users;
using XYZ.AppLogic.Settings;
using XYZ.ViewModels.UserPreferences;

ただし、それは他の何よりも個人的な好みです。

ソリューション ビューの編集

  • マイソリューション
    • MyProj.Data
      • モデル
        • ユーザー.cs
        • Account.cs
        • 設定.cs
    • リポジトリ
      • UserRepository.cs
      • AccountRepository.cs

User.cs は、テーブルを定義する私の POCO (Plain Ol' CLR Object) です。

リポジトリ フォルダーには、実際にユーザー データにアクセスできる ORM (私は PetaPoco を使用しています) に固有のものがあります。

たとえば、私の UserRepository にはメソッドがある場合があります

public User GetById(int id)
{
   var db = new Database(<myConnectionStringName>);
   return db.SingleOrDefault<User>(id);
}

この構文は PetaPoco に固有のものですが、実際の DB 接続からデータ オブジェクトを分離する方法です。

于 2012-05-08T12:26:13.280 に答える
0

常に個々の cs ファイルでクラス名を作成するため、ファイルのバージョン管理が容易になります。クラスを単一のファイルまたは複数のファイルに保持する場合、dll のサイズとは関係ありません。

ソリューションで Project > ProductName > Classes のようなフォルダー構造を作成します。

于 2012-05-08T12:19:29.390 に答える