gpt4 book ai didi

entity-framework - Entity Framework 验证困惑- '128'的最大字符串长度

转载 作者:行者123 更新时间:2023-12-03 08:52:40 24 4
gpt4 key购买 nike

我遇到一个令人困惑的问题,其中在我的Edit或Create Action 结果方法中,EF4会抛出DbEntityValidationException并带有内部消息,指出:

The field Body must be a string or array type with a maximum length of '128'.



有问题的模型如下所示:
[Table("tblArticles")]
public class Article
{
[Key]
public int ID { get; set; }
[Required(ErrorMessage="Title must be included")]
public string Title { get; set; }
[AllowHtml]
public string Body { get; set; }
[Required(ErrorMessage="Start Date must be specified")]
[Display(Name="Start Date")]
[DisplayFormat(DataFormatString="dd-mm-yyyy")]
public DateTime? StartDate { get; set; }
[Required(ErrorMessage = "End Date must be specified")]
[Display(Name = "End Date")]
public DateTime? EndDate { get; set; }
public int Priority { get; set; }
public bool Archived { get; set; }

public virtual ICollection<ArticleImage> Images { get; set; }
}

实际数据库中的“正文”字段的类型为“文本”,因此那里没有明显的限制。我要发布的数据是这样的:

<p>
This is an example to confirm that new articles are looking right.</p>
<p>
<img alt="" src="http://www.google.co.nz/logos/2011/houdini11-sr.jpg"
style="width: 160px; height: 56px; float: left;" /></p>


Edit方法的示例如下所示:
[HttpPost]
public ActionResult Edit(Article article)
{
if (ModelState.IsValid)
{
try
{
articleRepository.Update(article);
}
catch (DbEntityValidationException dbevEx)
{
ErrorSignal.FromCurrentContext().Raise(dbevEx);
ModelState.AddModelError("FORM", dbevEx);
return View("Edit", article);
}
// Other exception handling happens...
}

return RedirectToAction("Index");
}

最后,真正起作用的方法是:
public void Update(T Entity)
{
dbset.Attach(Entity);
db.Entry(Entity).State = System.Data.EntityState.Modified;
db.Commit();
}

我在代码或数据库中看不到任何可能导致此问题的东西,所以我还应该看其他什么地方?

最佳答案

代码中字符串字段的默认长度为128。如果使用EF验证,它将抛出异常。您可以使用以下方法扩展大小:

[StringLength(Int32.MaxValue)]
public string Body { get; set; }

这篇文章以某种方式变得受欢迎,因此我添加了第二种方法,该方法也有效:
[MaxLength]
public string Body { get; set; }
StringLengthAttribute来自System.ComponentModel.DataAnnotations程序集,而 MaxLengthAttribute来自EntityFramework程序集(EF 4.1)。

关于entity-framework - Entity Framework 验证困惑- '128'的最大字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414611/

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