との間で混乱DTOs(linq2sql)のClassオブジェクト!
-
19-09-2019 - |
質問
していたとlinq2sqlのlinq DTOsの授業が作成したlinq2sql)....
戸惑っているタスクの更新は、アプリケーションといっDTOs使うべきです。輸送日時
を使用していリポジトリのパターンで渡しからデータリポジトリのサービスのlinq2sql dtos...ってからのサービス層(これは基本的に私のビジネスロジックをしていパス周辺のclassオブジェクト..
このclassオブジェクトはbasicaly鏡画像(以下)のdtosが一部変更の一部が一般的に同じ..
なに話を戻すという問い!--この良い練習用dtosのみの輸送からデータリポジトリサービス層---一のサービス層(ビジネスロジック)べるのがマッピングすべての私dtosにあるクラスオブジェクトカウンターパーツのコースを用いautomapper!!)
私の他にインタビューを受けたことがあるのDTOSのようにクラスオブジェクトとしてい頃からの手法の方法として返しの種類などがそうな気が悪いのでは練習とか頑張ってください丸型に丸迷ってる方法で適用すべきである?
のお役に立てるように感謝
感謝
解決
ここでは私の意見:処理時の非trivalます。ご利用linq2Sqlオブジェクトのドメインモデルは良いアイデアです。見linq2SqlとしてORMした。データベース(linq2Sql直接ご意見には正常化 データ.授業のOOAD意味では正常化 挙動 なものとします。
[このclassオブジェクトはbasicaly鏡のイメージ】---
私た場合、このビルの用途linq2Sql.で現実的なもので....最線業務アプリケーションは希CRUD願います。なんの問題が大きな割合を占めのアプリケーションの主体に対応して直接データベースです。 思拘束されることを直接のDTOのた発生するが、同時にたくないの重複授業が散乱きます。
それでも私の解
私は"プログラムへのインターフェイス"です。
きんい PersonDto
(Dto立のためのデータ転送オブジェクト)の特性 FirstName, LastName, Age
(直接関係のデータベースを基盤とす
作成した、 IPerson
interfaceっPersonDto実行いたします。
[Table(Name="Persons")]
internal class PersonDto : IPerson
{
....
}
私のリポジトリの方法は、取得する IPerson
に対して、Linq2Sqlクラスです。
IPerson somePerson = _repository.Get(someGuid);
somePerson.FirstName = "SomeName";
_repository.Save(somePerson);
このアプローチにはたくました。きみんながそれぞれの必要性から離れるのDTOいうことができるかなり容易なインターフェースを表すマオブジェクトに対して、DTO.
一般的なポイント:をDTOの手で---私は知らないの音狂っていただきますの作品も本当は、トップダウン、テスト駆動開発です。おDTO(linq2Sql)フラッシュすることはありません非常に軽く開かれる変化を外します。dbmlデザイナー。
おDTOのDataContextの内.理由はありませんのおdtoの露出する公(たい公共のインタフェースでのリポジトリおよびドメイン。その力、論理的に分離ドメインモデルやデータにアクセス。
すべてのデータにアクセス層別のプロジェクトも推進する分離)。
Putインターフェースの宣言は別のプロジェクト(これをご利用したいと思いませんかんラの円形ん。
武器agiは、dexで下がらないboxerぐ...
他のヒント
私は実際には、このトピックに同様の質問がありました。勧告は、ドメインオブジェクトとしてLinq2SQLクラスを使用すると、他の人が言及したように部分クラスを利用することでした。私の主な関心事は、これらのオブジェクト(つまり、プロパティ名)の形状、およびクラスメンバーのアクセス(つまり、例えば保護されたプライベートv.s.)。
付属しましたのオブジェクトの形状とさえアクセシビリティダミアンガードが一緒にあなたがLinq2Sqlがあなたのために生成するクラスの形状を制御することができるようにT4テンプレートを入れているT4テンプレートを使用することによって対処することができます。これは T4ここで見ることができますLinq2SQL のためのテンプレート。
これは私がに見て、それが私の懸念に対処するかどうかを確認するつもりですアプローチです。あなたのサービス層は、メソッドの引数にインターフェースを受け入れることができればまた、あなたはまた、サービス層があなたのLinq2SQLのDTO周りインターフェースのラッパー経由へのアクセス権を持っているかを制御することができます。
この情報がお役に立てば幸いです。
これは私が見てきた話題の最良の議論の一つです。
http://blog.wekeroad.com/ブログ/ linqtosql-おかあちゃん-言っ-ノックあなたをアウト/ の
最後に、カップリングおよび凝集決定は状況であり、あなたはあなたの状況に何が最善かを決定する必要があります。
アプリケーションがLinqToSqlをoutgrowsすると、いかに簡単それがLinqToSqlをヤンクし、それの場所で別のORMを挿入するようになりますか?それはあなたがすることを真剣に考える必要はありものです。
一般的に、あなたのビジネス層はLinqToSqlについて持っている知識を最小限に抑えます。 LinqToSqlは完全にあなたのUI層(ビジネス層は、このシールドのかなりの部分を占める)から隠されるべきです。それはLinqToSqlで間違った建築道を行くことは非常に簡単です、事実の後に正しい道に戻って取得するのは非常に難しいことができます。
linq2sqlデザイナーによって生成されたクラスは、部分クラスです。アイデアは、LINQは、あなたが話しているマッピングの種類を避けることができるように再構築/これらのエンティティを永続化するために使用されていることである。