2017-04-08 7 views
0

私はUmbraco poweredウェブサイトでPetapocoを使用しようとしています。私のポコには、既定のSQL値(getDate())を持つCreatedという列があります。私はPetapocoの挿入と更新時にその列を無視したいが、読んでは欲しくない。Petapoco属性が不足していますIgnoreOnInsert、IgnoreOnUpdate

どのように私はそれをエレガントに達成することができますか?おそらくカスタムマッパーやPetapocoエンジンのいくつかの新しい属性(IgnoreOnInsert、IgnoreOnUpdateのような)を含んでいます。

私はいくつかのハックを使用していましたが、そのうちの1つは各テーブルに2つのポコがあり、1つは挿入更新と1つの読み込みです。しかしそれを満足できるものとして受け入れるのは難しいです。

答えて

0

私は通常、クラスコンストラクタを作成し、そこで日付プロパティを設定します。何かのように

public class WhatEvs 
{ 
    ... 
    public WhatEvs() 
    { 
     DateCreated = DateTime.Now; 
    } 
} 
+0

はい、これもハックの一つであったが、その後、あなたは常にそれらを更新する前に、POCOさんを水和するように注意する必要があるため、私はそれを100%好きではなかったです、元の値を上書きしないでください。これは、sqlからの読み取りを行うために必要なすべての保存の前に、sql(およびWebサーバー)の負荷を増やすことを意味します。チームの新しい開発者に加えて、このコンベンションで指示されていない場合は、いくつかのコードを実行し、ポコのすべての初期値を上書きすることができます。 私は、IgnoreOnInsert、IgnoreOnUpdateなどの属性に似た何かを行うソリューションを希望します。 – Andrei

0

誰かがまだこれに興味がある場合、私は最終的に素晴らしい解決策を見つけました。 それはPetapocoの使用をやめ、「ComputedColumn」という素晴らしい属性を持つNPocoに切り替えます。 [ComputedColumn]属性でプロパティを装飾すると、そのプロパティはNPocoが挿入クエリと更新クエリを生成するときには使用されませんが、選択クエリでは使用されます。 これは、私がうまくいけば、私が触れないCreatedDateやUniqueGuidのようなデータベース処理値を持つことができますが、クエリを実行するときに取得することができます。親切にここにこの問題に答えアーロンへ ありがとう: https://github.com/CollaboratingPlatypus/PetaPoco/issues/421#issuecomment-348390149

関連する問題