gpt4 book ai didi

asp.net-mvc - 调用 TryUpdateModel 时防止 EF4 ConstraintException

转载 作者:行者123 更新时间:2023-12-03 07:47:01 25 4
gpt4 key购买 nike

给定以下 ASP.NET MVC Controller 代码:

    [HttpPost]
public ActionResult Create(FormCollection collection)
{
string[] whitelist = new []{ "CompanyName", "Address1", "Address2", ... };
Partner newPartner = new Partner();
if (TryUpdateModel(newPartner, whitelist, collection))
{
var db = new mainEntities();
db.Partners.AddObject(newPartner);
db.SaveChanges();
return RedirectToAction("Details/" + newPartner.ID);
}
else
{
return View();
}
}


问题在于 Entity Framework 4:示例合作伙伴实体被映射到数据库表,其字段不允许为 NULL(这在设计上是可以的 - 它们是必需的)。

不幸的是,当某些属性为空时调用 TryUpdateModel 会产生与预期一样多的 ConstraintExceptions!我确实希望 TryUpdateModel 在这种情况下返回 false。

如果不应该,EF 不允许将属性的值设置为 null 是可以的,但是 TryUpdateMethod 应该处理它,并将错误添加到 ModelState 错误集合中。

我错了,还是有人搞砸了 TryUpdateModel 方法的实现?

最佳答案

这不是“搞砸”。 It's by design .我首选的处理方式是绑定(bind)到编辑模型而不是直接绑定(bind)到实体。如果这不是您的选择,那么您可以 write an associated metadata provider或初始化属性。

关于asp.net-mvc - 调用 TryUpdateModel 时防止 EF4 ConstraintException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com