私はクラスがCharacter
であり、そのプロパティはプリミティブと複合オブジェクトの組み合わせであり、それらのオブジェクトのいくつかは複雑なオブジェクトでもあるプロパティを持っています。これらのすべては、EFCoreコードファーストを通じて生成された独自のテーブルを各クラスに持つデータベースで表されます。ここでEntityFrameworkコアコードを更新する方法複合オブジェクトでもあるすべてのプロパティを含む最初のオブジェクト?
は私が達成しようとしているかの小さな例です:
public class Character
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public string Race { get; set; }
public DeathSaves DeathSaves{ get; set; }
public SavingThrows SavingThrows { get; set; }
}
public class DeathSaves
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public bool? Success1 { get; set; }
public bool? Success2 { get; set; }
public bool? Success3 { get; set; }
public bool? Failure1 { get; set; }
public bool? Failure2 { get; set; }
public bool? Failure3 { get; set; }
}
public class SavingThrows
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public SavingThrow Strength { get; set; }
public SavingThrow Dexterity { get; set; }
public SavingThrow Constitution { get; set; }
public SavingThrow Intelligence { get; set; }
public SavingThrow Wisdom { get; set; }
public SavingThrow Charisma { get; set; }
}
public class SavingThrow
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public bool? Proficient { get; set; }
public int? Value { get; set; }
}
を使用すると、上記の見ることができるように、私のCharacter
クラスは、プリミティブの対象であるDeathSaves
が含まれており、複数を含むオブジェクトですSavingThrows
プロパティはすべてSavingThrow
です。
私は私のコントローラで、私はcharacter
がクライアントから送信されたが、それはDBに何かを更新しません
var dbchar = _context.Characters.SingleOrDefault(x => x.Id == character.id);
dbchar = character;
_context.SaveChanges();
を試みたことを知っています。私も_context.Characters.Attach(character)
をやってみましたが、それは何も更新していないようです。私はここで間違って何をしていますか?
"しかしそれはうまくいかない" [編集] – Will
で精巧に使うことができる申し訳ありませんが、私はそれをもっと明確に編集しました –
オブジェクトを変更するだけで、変数が 'dbchar = character; 'を指していても、あなたがやっていることのコンテキストがコンテキストにあるとは限りません。レポ内のインスタンスの更新を行う必要があります。私は100%確実に行うべきではありませんが、 'dbchar'のすべてのプロパティ(および子オブジェクトのプロパティ)を' character'のそれぞれの値に設定した場合、THEN 'SaveChanges'(またはUpdateが想定されています)仕事をする - 多分変更を保存するか?私は分からない)うまくいくはず... – Will