更新メソッドが例外をスローしますが、2回目の試行がメッセージで例外をスローした後に初めてログに記録されます。 **2回目の更新試行後にEFが例外をスローする
追加情報:「Hsys.InfluenzaTaniBilgisi」をタイプ のエンティティをアタッチ同じ タイプの別のエンティティが既に同じ主キー値を持つために失敗しました。これは、 'Attach'メソッドを使用して を使用した場合、またはエンティティの状態を に設定した場合に発生する可能性があります。グラフ内のエンティティのキー値が一致しない場合は となります。これは、一部のエンティティが新しく、 がデータベース生成キー値をまだ受け取っていないことが原因です。この場合は、 'Add'メソッドまたは 'Added'エンティティの状態を とし、 を非変更エンティティの状態を 'Unchanged'または 'Modified'に設定してください。 が適切です。
** その共通Iknow、多くのsmilar問題が見つかりましたが、私はそれを動作させるcouldntの..
ここでのコード片があります。
public void CreateUpdateInfluenzaTani(InfluenzaTaniBilgisi taniBilgisi)
{
using (HsysDbContext con = new HsysDbContext())
{
if (con.InfluenzaTestTanilari.Any(x => x.ICD10TaniKodu == taniBilgisi.ICD10Kodu && x.IsDeleted != true))
{
var taniExist = con.InfluenzaTaniBilgisi.FirstOrDefault(x => x.MuayeneId == taniBilgisi.MuayeneId && x.ICD10K
odu == taniBilgisi.ICD10Kodu && x.IsDeleted != true);
if (taniExist == null)
{
taniBilgisi.ObjectState = Framework.Entities.ObjectState.Added;
Create(taniBilgisi);
}
else
{
taniExist.HastaYasi = taniBilgisi.HastaYasi;
taniExist.HekimTC = taniBilgisi.HekimTC;
taniExist.ObjectState = Framework.Entities.ObjectState.Modified;
Update(taniExist);// throws Exception!
}
}
}
}
Updateメソッドには何が? – Sefe
どのバージョンのEntityFrameworkを使用しますか? – Nikolaus
問題はUpdate-Callにあると思います。おそらく、ObjectStateを設定せずにUpdateメソッドを呼び出すほうがよいでしょう。 – Nikolaus