@shinsukeoda その1メソッドは1つ上の「サービス層」に入れてますね>じぶん 「会員情報の更新」的な。
2012-09-12 12:24:07@hidori かといって型いっしょの物をこっちはMVCのModelBinderから出てきたオブジェクトで、こっちはDbから Fetchした奴でを人間が書き分ける仕事をするのはもっと嫌な結果を生むんじゃないかね
2012-09-12 12:24:16@kazuk レポジトリから出てきた/入れるブツは POCO 的に扱えばいいんじゃない? プロパティ値の取得・設定以外に期待する動作ってなんかある??
2012-09-12 12:26:44@hidori むしろ期待しない動作が引き起こされる事があるんだわA とBにDB的な関連があり、ORマッパーが A.B を生やしましたよと ModelBinder から A.B がnullなインスタンスが生成されて、これをAddしてSaveするとBにはdeleteが行く
2012-09-12 12:37:48@hidori んだども、上から下まで OR マッパーが作った型で通ってるから調整の必要な境界がはっきりしなくなるんだわ
2012-09-12 12:41:09@kazuk 数が多いと把握するの大変だけど。。。詰め替えると型が別物になるし、詰め替えのコストがモッタイナくて (^^;
2012-09-12 12:46:00最新の更新メソッド: public static void Update(Predicate<Hoge> predicate, Action<Hoge> update);
2012-09-12 12:47:29@hidori 商品と買ったお客のリレーションシップを追加してモデルに反映したとたんに商品情報更新時にリレーションシッププロパティ経由でお客が消えるという事故を目撃した人なので、そこのコストは払うべきと思いますよ
2012-09-12 12:47:42@kazuk @hidori なるる、それをHttpContext.DisposeOnPipelineCompletedに突っ込むとかは、ダメ?
2012-09-12 12:52:47@neuecc @hidori 保険としてはアリ、明示的にDisposeするコードを書きたいから書くけど( Dispose は何度呼んでも良い事になってるので、入れとく事もある
2012-09-12 12:55:14@neuecc @kazuk DB接続がいつダメになるかは保証ないからね。DBアクセスダメになったところで、特にリカバリとかやらない感じならページリクエストの単位でもいいのでは。
2012-09-12 12:57:40@kazuk @hidori どもですー。安全策は取りたいので、RepositoryをIDisposableにする+DisposeOn...に入れておく、な方向でとりまやってみます。
2012-09-12 13:03:03うーん、やっぱりそっちに戻そうかなぁ (^^; RT @neuecc @kazuk @hidori どもですー。安全策は取りたいので、RepositoryをIDisposableにする+DisposeOn...に入れておく、な方向でとりまやってみます。
2012-09-12 13:04:43あ。static やめても using まみれにならないカタチ思いついたw RSS フィードのやつで実験してみよー
2012-09-12 13:08:16@hidori SqlConnectionと SqlCommand 6個、SqlTransaction 、SqlDataReader のusingとConnectionとReaderのCloseがtry finally というてんこ盛りなコードとか嫌ですわぁ(実在する
2012-09-12 13:13:03@kazuk なるほどw その更新が全面的に許容できないならトリガーで防御? しかし、そーするとテストデータ消す時とか少し手間か。
2012-09-12 13:17:18@hidori そこでは、そもそもORマッパーにリレーションシッププロパティを作らせないという解になりましたわ(危ない機能は切る
2012-09-12 13:26:31@hidori 善し悪しはさておき ORマッパーのオブジェクトを余り遠くに持ち出さない事が重要かと。View への表示内容に整形結果を作る時にプロパティに書き戻されてコード値文字列のはずのカラムに表示用文言がSaveされたとかいう笑い話もあるし
2012-09-12 13:38:31@kazuk 詰め替えするならなるべく下でやるか、ホントの表層まで持ち越すかかなぁ。層間で何回も。。。ってのは避けたい。
2012-09-12 13:42:20今の自分の立ち位置的には ORマッパーの存在は事故原因になるか事故防止のコストを払うとメリットが帳消しになるぐらいの代物でして…(Code Firstはedmx無いからT4で舐めて事故防止コード生成とかできないから気をつけろよ
2012-09-12 13:57:29