使用.NET Core 2.1,Entity Framework Core和NPGSQL。
我创建了一条新记录:
await _context.music.AddAsync(song);
await _context.SaveChangesAsync();
然后,在相同函数中,我进行了一些计算(创建时无法执行),然后调用Update(仅更新了Comments字段):
_context.music.Update(song);
await _context.SaveChangesAsync();
这是“歌曲”的类别:
public class Song
{
[Key]
public int SongId { get; set; }
public int Title{ get; set; }
public string Comments{ get; set; }
//Navigation Properties
public virtual ICollection<Foo> Foos { get; set; }
}
在我的MusicContext中:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ForNpgsqlUseIdentityColumns();
modelBuilder.Entity<Foo>()
.HasOne(m => m.Song)
.WithMany(r => r.Foos)
.HasForeignKey(m => m.SongId);
}
这是我得到的例外:
System.AggregateException:发生一个或多个错误。 (一个或多个 发生错误。 (实体类型“ Song”的实例不能为 跟踪,因为另一个实例具有相同的键值 {'SongId'}已被跟踪。附加现有时 实体,请确保只有一个具有给定键值的实体实例 被附上。考虑使用 'DbContextOptionsBuilder.EnableSensitiveDataLogging'以查看 冲突的键值。))---> System.AggregateException:一个或多个 发生错误。
有人有什么想法吗? :-/
答案 0 :(得分:0)
我会重新考虑您的方法。如果您使用相同的方法进行添加然后进行更新,则只需在底部进行添加,包括计算中的注释值即可。