6

私は、ADO.NET 2.0とC#、SQL Server 2005を使用してデータアクセス層を設計しています。これらの呼び出しをどこに配置するかについて、頭の中でよく争っています。保守可能な堅牢なコードを作成するには、以下のどちらの方法に従う必要がありますか。

方法1

Public Class Company
{

public string CompanyId
{get;set;}

public string CompanyAddress
{get;set;}

public bool Create()
{
}

public bool Update()
{
}

public bool Delete()
{
}

}

方法2

Public Class Company
{

public string CompanyId
{get;set;}

public string CompanyAddress
{get;set;}
}

そして、私はコアデータアクセスを行うために以下のような別のクラスを使用します。以下のように

Public Class CompanyRepository
{

public Company CreateCompany(string companyId,string companyDescription)
{
}

public bool UpdateCompany(Company updateCompany)
{
}

public bool DeleteCompany(string companyId)
{
}

public List<Company> FindById(string id)
{
}


}
4

3 に答える 3

7

メソッド2を使用します。データソースからの読み取り/書き込みはCompanyクラスの責任ではありません単一責任の原則)。ただし、ICompanyRepositoryインターフェイスを作成してCompanyRepositoryから、インターフェイスの実装を作成することもできます。このようにして、会社情報を保存/取得する必要があるクラスにICompanyRepositoryを挿入できます。また、単体テストが容易になり、将来的に別の実装を作成できるようになります(データベースからxmlファイルなどに切り替える)。

于 2012-01-15T13:42:51.530 に答える
2

関心の分離の原則に従う場合は、方法2を使用します。

異なるクラスで異なる責任を持つことは、テスト可能で保守可能なコードの作成に役立ちます。

これにより、より小さく、よりまとまりのあるクラスが生成され、記述、推論、および正確性のチェックが容易になります。

注意として、データアクセス層を手作りする代わりにORMを使用できます。

于 2012-01-15T13:38:26.757 に答える
1

私は第二の選択を支持します、原因

  • まず、data holder
  • あなたの箱を作った後operational unit

したがって、この場合、データをそれらを操作する関数から分離し、UnitTestingコードの異なるドメイン間での責任を大幅に容易にし、責任を分散させます。バグのローカリゼーションも簡単になる可能性があります。

于 2012-01-15T13:41:43.790 に答える