2016-04-27 2 views
0

コードファーストのEntity Frameworkの移行中にC#コードによって生成されるランダム値を挿入するにはどうすればよいですか?一意のインデックスを持つシリアル番号の列を追加しました。シリアル番号の形式はXXXYYYY-Xです.Xは数字、Yはアルファベット文字です。シリアル番号はシーケンス内にある必要はなく、ランダムでなければなりません(データベースに少量のレコードしかないため、シリアル番号が重複する可能性は低いです)。EF移行中にランダムな値を挿入します

私は次のことを試してみました:

AddColumn("dbo.Product", "SrNo", c => c.String(maxLength: 9, fixedLength: true, unicode: false, defaultValue: RandomSerialNo())); 

...しかし、移行はただ1つのシリアル番号を作成し、すべてのレコードのためにそれを挿入しようとします。

+0

解決策はまだ見つかりましたか?私は今非常に似た問題に直面しています。私は、ユーザーのテーブルに電子メール列を追加して、明らかに列を一意にしたいが、重複する値(複数のNULLまたは同じランダムな文字列)のために移行が失敗する。 – Christian

+1

実際はそうではありません。移行を2つの部分に分けなければなりませんでした。最初の部分は列を変更します。次に、データを一意にするためのスクリプトを手動で実行します。そして、2回目の移行でユニーク制約を追加します。 – Storm

答えて

-1

あなたは通常、あなたが更新-databaseコマンドを使用してデータベースを移行した後、シード方法がexcecuteますconfiguration.cs

で発見されSEED方法でデータベースにデータを挿入するようにコードを置く必要があります。

+1

問題は、移行後にSeedメソッドが実行されることです。ただし、移行中に一意インデックスが作成されます。この結果、移行が失敗するため、Seedメソッドは実行されません。 – Storm

関連する問題