EF7不保存对象图

克雷格(Craig W.)

我希望当我找到答案时,我会觉得自己是个白痴,但是我无法弄清楚为什么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; }
}

然后,我编写以下代码:

using (var db = new BloggingContext())
{
    var blog = new Blog() { Url = DateTime.Now.ToString() };
    blog.Posts.Add(new Post() { Title = "Foo", Content = "Foo" });
    blog.Posts.Add(new Post() { Title = "Bar", Content = "Bar" });

    db.Blogs.Add(blog);
    var count = db.SaveChanges();

    Console.WriteLine("{0} records saved to database", count);

    return blog.BlogId;
}

之后SaveChanges就是所谓的blog对象有一个BlogId,但BlogId在这两个Post对象仍然是-1,没有被添加到数据库中。

natemcmaster

从EF 7 beta 6开始,调用DbSet<T>.Add(obj)只会添加obj,而不会添加与关联的所有实体obj

就您而言,您还需要致电db.Posts.Add(post)每个新帖子。

在EF 7 RTM之前,这种行为可能会改变。您可以通过在GitHub上观看此问题来跟踪对此API的更改:使用图形#2726决定Add()的行为

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数据保存在EF7中,只有一个对象-没有很多对象

来自分类Dev

EF7和breeze.js-批量保存订单

来自分类Dev

未填充EF7核心多对多引用对象

来自分类Dev

多对多EF7

来自分类Dev

EF Core 不保存 ParentId

来自分类Dev

ef7无法检索子集合的子对象的属性

来自分类Dev

EF7 / Linq-包含嵌套对象的“包含”查询引发异常

来自分类Dev

NHibernate一对一映射-不保存完整对象图

来自分类Dev

在EF7中加载参考

来自分类Dev

EF7一对多映射

来自分类Dev

EF7 DBContext的配置错误?

来自分类Dev

使用EF7的存储库模式

来自分类Dev

EF7一对多映射

来自分类Dev

EF7错误插入默认日期

来自分类Dev

Mongoose / MongoDB不保存对象

来自分类Dev

关闭对象而不保存更改

来自分类Dev

Android DBFlow不保存对象

来自分类Dev

使用EF7(EF Core)的UWP数据绑定

来自分类Dev

从R到Java流图而不保存图

来自分类Dev

对象上的Typescript useState钩子不保存

来自分类Dev

修改的JPARepository CPRQ不保存完整对象

来自分类Dev

Django方法相同的对象不保存

来自分类Dev

解析后台作业不保存对象

来自分类Dev

MongoDB更新的对象与项目删除不保存

来自分类Dev

使用EF7和VNext访问DBContext

来自分类Dev

EF7加载列表中实体的子级

来自分类Dev

ASP.NET vNext EF7 dbContext问题

来自分类Dev

EF7 Beta 4:AddEntityFramework不接受参数(配置)

来自分类Dev

EF7投影不急于进行负荷收集