以下のコードはレコードを正常に保存しますが、クライアントは保存しません。私はレコードをDBに保存してもエラーは出ませんが、親クライアントとの関係は作成しません。デバッグ中は、varクライアントに実際にクライアントオブジェクトが含まれていることを確認しました。エンティティフレームワークのコードの最初の更新レコードが親を保存していません
ご協力いただきありがとうございます。とにかくここ
は私のコードです:
using (var context = new TDBContext())
{
if (SelectedProject != null)
{
var client = (from x in context.Clients
where x.ID == (Guid) comboClient.SelectedValue
select x).FirstOrDefault();
Project project = new Project()
{
ID = (Guid) SelectedProject,
ProjectCode = textProjectCode.Text,
Client = client,
ProjectStart = dateProjectStart.SelectedDate,
Active = checkActive.IsChecked
};
context.Projects.Attach(project);
context.Entry(project).State = EntityState.Modified;
context.SaveChanges();
}
else
{
MessageBox.Show("Project ID not loaded!", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
プロジェクトエンティティ:
public Project()
{
}
[Key]
public Guid ID { get; set; }
public string ProjectCode { get; set; }
public Client Client { get; set; }
public DateTime? ProjectStart { get; set; }
public bool? Active { get; set; }
クライアントエンティティ:
public Client()
{
}
[Key]
public Guid ID { get; set; }
public string ClientName { get; set; }
public byte[] ClientLogo { get; set; }
public ICollection<Project> Projects { get; set; }
私はクライアントを取得してその子コレクションを更新します。しかし、Project.Clientのエンティティ状態も同様に変更するとうまくいくでしょう。また、私は親レコードの存在をカウントしているときに 'First()'から 'FirstOrDefault()'を優先します。私は少なくともそれがnullでないことを確認するだろう。 –