EF7 beta5 : 하위 엔티티를 삽입하는 동안 오류가 발생했습니다.

asp.net-core c# entity-framework-core

문제

ASP.NET5와 Entity Framework 7.0.0-beta 5를 사용하여 API를 만들었습니다.

여기 에 설명 된대로 모델, DbContext 및 리포지토리가 만들어졌으며 하위 엔터티가있는 데이터를 삽입하려고하면 예외가 발생합니다.

"NULL 값을 'Status'열, 'Company'테이블에 삽입 할 수 없으며 열에서 널을 사용할 수 없습니다. INSERT는 실패합니다."

코드 + 예외

Status 속성은 회사 엔티티에서 null이 아니지만 EF가 하위 엔티티의 값을 삽입 할 수없는 이유를 알지 못합니다. (이 경우, "1")

다음은 스택 추적입니다.

   at Microsoft.Data.Entity.Relational.Update.ReaderModificationCommandBatch.Execute(RelationalTransaction transaction, IRelationalTypeMapper typeMapper, DbContext context, ILogger logger)
   at Microsoft.Data.Entity.Relational.Update.BatchExecutor.Execute(IEnumerable`1 commandBatches, IRelationalConnection connection)
   at Microsoft.Data.Entity.Relational.RelationalDataStore.SaveChanges(IReadOnlyList`1 entries)
   at Microsoft.Data.Entity.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList`1 entriesToSave)
   at Microsoft.Data.Entity.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.Data.Entity.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.Data.Entity.DbContext.SaveChanges()
   at **.Data.Repositories.CompanyRepository.Create(Company company) in D:\**.Data\Repositories\CompanyRepository.cs:line 36
   at **.API.Controllers.CompanyController.Create(Company company) in D:\**.API\Controllers\CompanyController.cs:line 48

다음은 코드입니다.

DbContext

public class MrBellhopContext : DbContext
{

    public DbSet<Company> Company { get; set; }
    public DbSet<CompanyStatus> CompanyStatus { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Company>().Table("Company");
        modelBuilder.Entity<Company>().Key(c => c.CompanyId);
        modelBuilder.Entity<Company>().Index(c => c.Name);
        modelBuilder.Entity<Company>().Reference(c => c.Status).InverseReference().ForeignKey<CompanyStatus>(cs => cs.StatusId);

        modelBuilder.Entity<CompanyStatus>().Table("CompanyStatus");
        modelBuilder.Entity<CompanyStatus>().Key(cs => cs.StatusId);

        base.OnModelCreating(modelBuilder);
    }

}

모델

public class Company
{

    public int CompanyId { get; set; }

    public string Name { get; set; }

    public string Email { get; set; }

    public CompanyStatus Status { get; set; }

    public DateTime CreatedAt { get; set; }

    public DateTime UpdatedAt { get; set; }

}

public class CompanyStatus
{

    public int StatusId { get; set; }

    public string Name { get; set; }

}

저장소 (메소드 만 작성)

    public int Create(Company company)
    {
        _dbcontext.Add(company);
        _dbcontext.SaveChanges();

        return company.CompanyId;
    }

누구든지 올바르게 자식 엔티티를 삽입하는 방법을 알고 있습니까?

인기 답변

EF7에서는 자식 객체를 컨텍스트에 첨부해야합니다. 이것은 EF6와는 다르며, 당신이 직면하고있는 시나리오가 확실합니다. 저장하기 전에 dbcontext에 객체를 연결하십시오.

이 문제를 확인하려면 https://github.com/aspnet/EntityFramework/issues/2387 을 확인하십시오.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.