1

current は myclass の新しいインスタンスで、 context.classRepo.bringcontentwithid(userid) はそのインスタンスを返します。この値を現在の新しいオブジェクトに割り当ててから、データテーブルの新しい行として挿入しようとしましたが、「プロパティ 'ID' はオブジェクトのキー情報の一部であり、変更できません」のようなエラーが表示されます。

私が理解していなかった点は、インスタンスを変更して新しいデータとして挿入するだけで、何かを変更したくないということです。

どうすればこれを修正できますか?

   myclass current = new myclass();

    current = context.classRepo.bringcontentwithid(userid);
                    if (current != null)
                    {
                        current.id = context.classRepo.YeniBildirimIdGetir();
                        current.GONDERILDI = "1";
                        context.classRepo.Insert(current);
4

2 に答える 2

0

デフォルトでは、EF はID自動インクリメント ID として取得するため、手動で割り当てようとするとエラーが発生しますIDID手動で割り当てられることを EF に理解させるには[DatabaseGenerated(DatabaseGeneratedOption.Assign)]、次のようにプロパティを装飾します。

public class myClass()
{
    [DatabaseGenerated(DatabaseGeneratedOption.Assign)]
    public int ID {get;set;}
}

名前空間を必ずインポートしてくださいSystem.ComponentModel.DataAnnotations.Schema

于 2014-06-16T08:02:54.007 に答える
0

データベースの更新中に id の一部を変更することはできないため、フィールドを更新する場合は、最初にそれを削除してから、新しい値で挿入する必要があります。これが主キーを更新する安全な方法です (主キーが複合の場合) key ) であり、主キーを更新したい

于 2015-11-16T08:52:08.360 に答える