MVC3 - 自动虚拟收集(数据库保存更改)

时间:2012-06-29 15:37:18

标签: c# asp.net-mvc-3 entity-framework

编辑:

我发现了为什么它没有看到变化的问题 我更改了与modelbinder绑定的对象。在这种情况下,它不会被上下文跟踪。

您好

我的应用程序中存在虚拟ICollections问题。 EF自动保存对实体的更改是否正确? * *

例如,如果我将一个项目添加到列表中(将玩家添加到团队中),它将在不使用存储库和dbset的情况下将其保存到数据库中吗?

我有类似的东西

    public int RayonId { get; set; }
    public String Rayonnaam { get; set; }
    public virtual ICollection<Duivenmelker> Duivenmelkers { get; set; }

    public Rayon()
    {
           Duivenmelkers = new List<Duivenmelker>();

    }      


    public void AddMelker(Duivenmelker m)

    {
        Duivenmelkers.Add(m);
    }

以上代码仅在本地更改List。但是不保存对数据库的更改。我可以调用存储库将新对象直接添加到数据库中,但这不是我认为的好方法。

导致这种情况无效的可能是错误的? * *

savechanges返回0(认为未进行任何更改)

我现在已添加

            c.Vluchten.Attach(v);
            c.Entry(v).State = EntityState.Added;

这显然有效,但我仍然不知道为什么EF没有明确地告诉他没有看到这些变化

2 个答案:

答案 0 :(得分:1)

不要使用模型绑定器中的绑定对象,而是搜索附加到上下文的对象并在那里进行更改。 (EntityChangetracker不跟踪绑定对象)

答案 1 :(得分:0)

您需要致电SaveChanges()