2012-01-10 9 views
3

私はSQL Serverを使用するレガシーアプリケーションを変換しています。データアクセスレイヤにpetapocoを使用したいと考えています。PetaPoco insertを使用しているときにデータベースのDEFAULT値を処理する方法は?

テーブル定義には、DEFAULT値を持つ多くの列が含まれています。

私は新しいレコードを挿入するときにDALにデフォルト値を処理させたいと思います。

残念ながら、ResultColumn属性を使用することは、UPDATEとINSERTを使用すると列が破棄されるため、解決策ではありません。 DEFAULT値は、読み取り専用で計算されたフィールドとまったく同じ動作をしません。

これを処理する方法はありますか?

答えて

7

値がNULLに設定されている場合、DBNullに値が挿入/更新されるため、現時点では方法はありません。

おそらく、新しい属性を持つコードを変更する必要があります。 [OmitColumnIfDefaultValue]その列の値がデフォルトのCLR値と等しい場合、insert文から列を省略できます。

+0

。 http://stackoverflow.com/questions/230662/insert-default-value-when-parameter-is-nullに関して、挿入中にpetapocoがマークされた塗りつぶしを無視するようにいくつかの明確なルールを定義する必要があります:1)対応するプロパティを装飾する必要があります。2)挿入前にオブジェクトの値をnullに設定する必要があります。 – Larry

+0

あなたがヌルと言うとき、そのintがnullであるintを使う必要があるかどうか、またはその値がc#...のデフォルト値と等しい場合はどうなりますか? intsの場合は0ですか? – Schotime

+0

確かに、型はnull可能でなければなりません。 DEFAULTがNOT NULLフィールドのINSERT中にNULL値を避けるためのオプションであると考えると、これはうまくいくと思います。 – Larry

関連する問題