私はそのようなリポジトリを設計する際のフィードバックが必要です。深刻な夜には安心して休憩するのに役立ちます...
Webフォームのテストを書く意思がありません。
明日、来月または来年にORMまたはデータベースを変更するつもりはありません。 クエリロジックを集中化し、コードの重複を避ける場所が必要です。右?...インタフェースがなく、抽象化=収差のないリポジトリ?
public class StuffRepository // no contract, I simply instanciate StuffRepository
{
// Scope is Per-Request, DI, no abstraction...
protected StuffDb DbContext = ObjectFactory.GetInstance<StuffDb>();
// Returns a Stuff, an Entity (EF), no abstraction
public Stuff Get(Guid id)
{
return DbContext.Stuff.FirstOrDefault(s => s.Id == id);
}
}
私は完全に抽象化されたリポジトリ、個々のページのテスト容易性と抽象化されたエンティティ(DTOとドメイン/モデルオブジェクト)のためのWebフォームの上にMVPアーキテクチャで働いています。それは決して終わらない、それは十分ではない、完璧ではない。
私はすべての規則、原則に違反し、これをリポジトリと呼ぶ異常を生み出していますか?
この名前をStuffDAL
に変更すると、突然意味がありますか?
おかげで私に
コードをテストしたり変更したりするつもりがない場合は、おそらくそのまま完璧です。しかし、誰がコードを変更しようとしていますか?変化は私たちに強制され、準備が必要です。なぜ私がこれを「適切に」構築していないのか疑問に思う。あなたが悩まされることができないか、他の制約があるからというだけですか?たとえば、コード内の不要なノイズをすべてカットすることが目的の場合は、代わりにmirco-ormを参照してください。しかし、ユニットテストをしてください - あなたは後で自分自身に感謝するでしょう。 –
ORMやデータベースを交換するのは私の意図ではありません。なぜ私はここでコードを変更できないのか分かりません。私が理解しない限り?テストを書くことができず、すべてを抽象化することができない理由があります。まず、Webフォームをテストするには、追加のサービスレイヤーが必要です。テストを記述して維持するには、追加時間が必要です。要約するには、抽象化するためにDI抽象コンポーネントに時間がかかり、Webフォームのページのコンストラクタやon_initイベントでは、厳密なスケジュールでプロジェクトを提供するだけであり、感情的にも個人的にも関与することはできません。 – maxbeaudoin
小さな孤立したコンポーネントのテストを書きますが、Webフォームはテストしません。私はコントローラをテストしなければならない。 – maxbeaudoin