实体框架不会保存对模型

时间:2015-05-26 17:33:10

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

我在我的网站上使用Database First,我正在尝试更新数据库的一个条目的数据,但更改不会保存在一个部分中,而是在另一个部分中工作。

这是我用模型数据填充表单或创建一个新表来保留ID:

public ActionResult Editar(int ID = 0)
{
    var banner  = new Banner();
    var siteVM  = new SiteViewModel();

    if (ID == 0)
    {
        db.Banner.Add(banner);
        db.SaveChanges();
    }
    else
    {
        banner = db.Banner.Find(ID);

        siteVM.iePaginas = db.Pagina.ToList().Select(x => new SelectListItem
        {
            Value = x.ID.ToString(CultureInfo.InvariantCulture),
            Text  = x.nome.ToUpper()
        }).ToList();

        foreach (var pagina in siteVM.iePaginas)
        {
            foreach (var bannerPagina in banner.BannerPagina)
            {
                if (int.Parse(pagina.Value) == bannerPagina.paginaID)
                {
                    pagina.Selected = true;
                }   
            }
        }
    }

    siteVM.Banner = banner;

    return View(siteVM);
}

这就是我保存的地方:

[HttpPost]
public ViewResult Editar(SiteViewModel model)
{
    try
    {
        var banner = model.Banner;
        banner.rascunho = !banner.ativo;

        if (banner.ID == 0)
        {
            db.Banner.Add(banner);
        }
        else
        {
            db.Entry(banner).State = EntityState.Modified;
        }

        //Remove the related pages
        foreach (var source in db.BannerPagina.Where(x => x.bannerID == banner.ID))
        {
            db.BannerPagina.Remove(source);
        }

        //Record related pages
        foreach (var pag in model.PaginasSelecionadas)
        {
            db.BannerPagina.Add(new BannerPagina { paginaID = int.Parse(pag.Value), bannerID = banner.ID });
        }

        db.SaveChanges();

        ViewBag.Salvo = 1;

        return View(model);
    }
    catch
    {
        ViewBag.Error = 1;
        return View(model);
    }
}

db.Entry(banner).State = EntityState.Modified;不起作用,我在模型中获取数据并且我的ModeState有效但数据库上的数据没有更改。就在我的下方:

db.BannerPagina.Remove(source); //BannerPagina contains a set of pages that are related to my banner so i can choose the pages i want this banner displayed

db.BannerPagina.Add(new BannerPagina { paginaID = int.Parse(pag.Value), bannerID = banner.ID });

他们工作正常。我也尝试使用attach方法,但它也不起作用。

修改

有点发现我的问题,早些时候我已经将我的表属性上的StoreGeneratedPattern选项更改为Computed而不是None(我这样做了所以我可以创建一个空对象数据库使用它的默认值),一旦我将其更改回来,我的更改就开始保存在数据库中。

有没有办法让Computed配置工作?

0 个答案:

没有答案