EF7 개체 그래프 저장 안 함

entity-framework-core

문제

나는 이것에 대한 답을 알아낼 때 바보처럼 느껴질 것이라고 기대하지만, EF7이 EF6에서 작업하는 것과 같은 방법으로 오브젝트 그래프를 저장하지 않는 이유를 알 수 없다.

내 맥락은 :

public class BloggingContext : DbContext, IBloggingContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Make Blog.Url required
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .Required();

        modelBuilder.Entity<Post>()
            .Reference(p => p.Blog)
            .InverseCollection(b => b.Posts)
            .ForeignKey(p => p.BlogId);
    }
}

public class Blog
{
    private ICollection<Post> _posts;

    public int BlogId { get; set; }
    public string Url { get; set; }

    public virtual ICollection<Post> Posts
    {
        get
        {
            if (_posts == null)
            { _posts = new Collection<Post>(); }
            return _posts;
        }
        protected set
        { _posts = value; }

    }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }

    public Blog Blog { get; set; }
}

다음 코드를 작성합니다.

public class BloggingContext : DbContext, IBloggingContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Make Blog.Url required
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .Required();

        modelBuilder.Entity<Post>()
            .Reference(p => p.Blog)
            .InverseCollection(b => b.Posts)
            .ForeignKey(p => p.BlogId);
    }
}

public class Blog
{
    private ICollection<Post> _posts;

    public int BlogId { get; set; }
    public string Url { get; set; }

    public virtual ICollection<Post> Posts
    {
        get
        {
            if (_posts == null)
            { _posts = new Collection<Post>(); }
            return _posts;
        }
        protected set
        { _posts = value; }

    }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }

    public Blog Blog { get; set; }
}

SaveChanges 가 호출 된 후 blog 객체에는 BlogId 있지만 두 Post 객체의 BlogId 는 -1이고 아무 것도 데이터베이스에 추가되지 않습니다.

수락 된 답변

호출 EF 7 베타 6 같이 DbSet<T>.Add(obj) 만 추가 obj , 엔티티들 모두와 연관되지 obj .

귀하의 경우, 각 새로운 게시물에 대해 db.Posts.Add(post) 을 호출해야합니다.

이 동작은 EF 7 RTM 이전에 변경 될 가능성이 큽니다. GitHub에서이 문제를보고이 API의 변경 사항을 확인할 수 있습니다 : 그래프 # 2726의 Add () 동작 결정




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