>

.NET Core 2.1, Entity Framework Core 및 NPGSQL 사용

새로운 레코드를 생성합니다 :

await _context.music.AddAsync(song);
await _context.SaveChangesAsync();

그런 다음동일한함수 내에서 몇 가지 계산 (생성 시점에 수행 할 수 없음)을 수행 한 다음 업데이트 (설명 필드 만 업데이트 한 경우)를 호출합니다.

_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: One or more errors occurred. (One or more errors occurred. (The instance of entity type 'Song' cannot be tracked because another instance with the same key value for {'SongId'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.)) --->System.AggregateException: One or more errors occurred.

어떤 아이디어가 있습니까? :-/

  • 답변 # 1

    귀하의 접근 방식을 재고 할 것입니다. 동일한 방법으로 추가와 업데이트를 수행하는 경우 계산의 주석 값을 포함하여 맨 아래에 추가를 수행합니다.

관련 자료

  • 이전 angularjs - Angular2에서 반응 형과 함께 "ckeditor"를 사용하는 방법은 무엇입니까?
  • 다음 AutoHotKey 핫 스트링은 Windows의 gvim 또는 WSL Ubuntu의 vim에서 트리거되지 않습니다