ASPで発行された場合のPRIMARY KEY制約の違反特定のIDのPRIMARY KEY制約の違反。 (私はコード内にIDをランダムに生成しますが、IDはデータベースには存在しません)。Azure
ローカルマシン(同じAzureホストデータベース)でこのコードをデバッグすると、すべて正常に動作します。 Azureでコードを公開すると、エラーが発生します。奇妙なことは、エラーによってもたらされたランダムIDが私のデータベースに存在しないということです。
コード(私は新しいID &新しいschemeIDと薬のリストをコピー):
List<medication> l = db.medication.AsNoTracking().Where(x => x.scheme_ID == schemeID).ToList();
foreach (medication m in l) {
int id = generateUniqueMedicationID();
m.ID = id;
m.scheme_ID = newSchemeID;
db.medication.Add(m);
}
db.SaveChanges();
generateUniqueMedicationID()メソッド:
private int generateUniqueMedicationID()
{
bool stop = true;
int id = -1;
while (stop)
{
Random r = new Random();
id = r.Next(100000000, 1000000000);
if (!db.medication.Any(o => o.ID == id)) stop = false;
}
return id;
}
SQL ServerのテーブルにPK列はどのように定義されていますか? – Sparrow
'generateUniqueMedicationID'はどのように見えますか?なぜ標準のC#命名規則に従っていないのですか? – mason
'Primary Key'を' Identity(1,1) 'に設定すると、テーブルに行が追加されるたびに自動的にインクリメントされます。 –