コードファーストのEntity Frameworkの移行中にC#コードによって生成されるランダム値を挿入するにはどうすればよいですか?一意のインデックスを持つシリアル番号の列を追加しました。シリアル番号の形式はXXXYYYY-Xです.Xは数字、Yはアルファベット文字です。シリアル番号はシーケンス内にある必要はなく、ランダムでなければなりません(データベースに少量のレコードしかないため、シリアル番号が重複する可能性は低いです)。EF移行中にランダムな値を挿入します
私は次のことを試してみました:
AddColumn("dbo.Product", "SrNo", c => c.String(maxLength: 9, fixedLength: true, unicode: false, defaultValue: RandomSerialNo()));
...しかし、移行はただ1つのシリアル番号を作成し、すべてのレコードのためにそれを挿入しようとします。
解決策はまだ見つかりましたか?私は今非常に似た問題に直面しています。私は、ユーザーのテーブルに電子メール列を追加して、明らかに列を一意にしたいが、重複する値(複数のNULLまたは同じランダムな文字列)のために移行が失敗する。 – Christian
実際はそうではありません。移行を2つの部分に分けなければなりませんでした。最初の部分は列を変更します。次に、データを一意にするためのスクリプトを手動で実行します。そして、2回目の移行でユニーク制約を追加します。 – Storm