无法使用多个ICollection属性MVC3更新Model实体

时间:2013-03-21 14:45:52

标签: asp.net-mvc-3 properties model updatemodel icollection

这是我的问题,

我在Componet.cs中有下一个模型(我的真实组件还有十个Icollections,但我认为问题应该与1个ICollection相同或者10个我没有将它们写下来)。

public partial class Component
{
    public Component()
    {
        this.BrandOwner = new HashSet<BrandOwner>();
        this.Description = new HashSet<Description>();
    }

    public int GestCompID { get; set; }
    public int ID { get; set; }
    public Nullable<int> BaseGestCompID { get; set; }
    public Nullable<int> BaseCompID { get; set; }
    public string DefName { get; set; }
    public string ProductRef { get; set; }

    public virtual country country { get; set; }
    public virtual language language { get; set; }
    public virtual ICollection<BrandOwner> BrandOwner { get; set; }
    public virtual ICollection<Description> Description { get; set; }

在我的应用程序中,我可以编辑该组件,以添加,删除或编辑其任何属性。我可以根据国家或语言添加几个BrandOwners或描述。 当我选择其中一个组件来编辑时,我在一个Session变量中加载Component,并对该Session变量进行所有操作。

当我完成项目的编辑时,我有两个按钮,接受和取消。 如果我取消所有在Session变量中所做的更改都会被解除。

当我按下“接受”按钮更新所选项目时,问题就出现了。

我无法找到方法

这是我的Accept方法:

    public ActionResult AcceptChanges()
    {
        try
        {
            Component component = (Component)Session["component"];
            GIEntities.Current.Component.Attach(component);
            GIEntities.Current.SaveChanges();
            Session["component"] = null;
            return RedirectToAction("Index", new { Message = "correct" });
        }
        catch (DbUpdateException ex)
        {
            String error = ex.ToString();
            Component component = (Component)Session["component"];
            return RedirectToAction("EditComponent", new { id = componente.ID });
        }
    }

我已经尝试将状态附加,添加和设置为Modified,但它不起作用。 我也尝试分离de component并再次附加它。 有人能告诉我我做错了什么吗?

非常感谢,并提前致谢。

抱歉我的英文不好。

0 个答案:

没有答案