はじめに

Save基本編を読まれた方が対象です。まだ読んでいない方はこちらを先にお読みください。

強制追加機能って使うときあるんですか?

これは便利機能ですので通常は使用しませんが、マスタメンテナンスのとき、
  • 既に登録されているレコードを複写したい
と思ったことはないでしょうか?

そんな時はSaveAsNewメソッドを使用してみてください。
以下サンプルコードです。

VB.NET
0:  Imports Kairyu.Extensions.IO
0:  Imports Kairyu.Load
0:  Imports Kairyu.Save
・・・
1:  DB.Transact(
2:      Sub(r As ModelSaver) 
3:          Dim m= r.From(Of Prefecture ).WhereKeyEquals (1).ToItem
4:          r.SaveAsNew(m)
5:      End Sub)
  • 今回のサンプルでは、Prefecuteクラスに主キー自動生成機能がないため、主キー値1としてINSERT文が起き。キー違反がでます。このため、Prefectureクラスをオートナンバーに対応させてから実行してみてください。

Prefecture.vb
Imports Kairyu
Public Class Prefecture
    <AutoKey()>
    Public Property PrefectureID As Integer
    Public Property PrefectureName As String
End Class

おまけ

SaveAsNewメソッドは実質以下のコードと同じです。
Imports Kairyu.Extensions.IO
Imports Kairyu.Load
Imports Kairyu.Save
・・・
DB.Transact(
    Sub(r As ModelSaver) 
        Dim m= r.From(Of Prefecture ).WhereKeyEquals (1).ToItem
        r.Save(m, New Strage)
    End Sub)

「Strageにない>DBにもない>INSERT文発行」というだけです。

実際に利用する例として
  • 「複写」というボタンを押下したとき、Strageを初期化する(New Strage)
という方法も有効です。





Last edited Mar 12, 2013 at 4:51 PM by mk3008, version 1

Comments

No comments yet.