Используя следующие модели:
public class User {
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey("Id")]
public List<UserLog> UserLogs { get; set; }
}
public class UserLog {
[Key]
public long LogId { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string LogAction { get; set; }
public DateTime LogCreatedOn { get; set; }
public string By { get; set; }
}
Я могу вставлять / обновлять как UserLogs, так и UserLogs с помощью одного SaveChangesAsync ().
Проблема, с которой я сталкиваюсь, заключается в том, что я добавляю запись в UserLog, затем удаляю пользователя и, наконец, вызываю SaveChangesAsync (); UserLog никогда не добавлялся.
например
_db.UserLogs.Add(userLogItem); //never gets added.
//await _db.SaveChangesAsync(); //even trying to call this line right after.
_db.Users.Remove(user);
await _db.SaveChangesAsync();
Любые предложения приветствуются.





Вот как я определяю свои модели, когда у меня есть отношения «один ко многим».
public class User
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<UserLog> UserLogs { get; set; }
}
public class UserLog
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public long LogId { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string LogAction { get; set; }
public DateTime LogCreatedOn { get; set; }
public string By { get; set; }
[ForeignKey("Id")]
public virtual User User { get; set; }
}
Что именно вы пытаетесь сделать? Я полагаю, вы хотите добавить журнал для конкретного пользователя. Если это то, что вы пытаетесь сделать, значит, ваш код неправильный.
Да, я хотел бы добавить UserLog с LogAction = "Deleted" перед удалением фактической записи из таблицы Users одним вызовом SaveChanges. Могу я спросить, какой правильный код для этого? Спасибо.
Спасибо за ответ. Я пробую. Однако UserLog не вставляется. Мой код выглядит примерно так: _db.UserLogs.Add (userLog); _ db.Remove (user); await _db.SaveChangesAsync ();