我在ASP.NET MVC 3中制作了一个非常简单的CMS(只是为了学习它),但我遇到了并发症。 我正在使用EntityFramework(代码优先),我正在尝试将文章存储在MySQL数据库中(文章具有标准属性,如id,日期,标题和内容)。我的Create方法来自一些教程,如下所示:
[HttpPost]
public ActionResult Create(Article newArticle)
{
if (ModelState.IsValid)
{
db.Articles.Add(newArticle);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(newArticle);
}
}
我已经生成了一个Create视图(使用razor引擎)而没有改变任何东西。除非我尝试将更长的文本输入到“内容”属性(超过20或30个单词)的字段中,否则一切正常。然后我得到了一个
db.SaveChanges()行出现System.Data.Entity.Validation.DbEntityValidationException 未被用户代码
处理
错误。我已经尝试将用于存储文章内容的列更改为文本,然后更改为nvarchar(max)(使用Visual Studio的服务器资源管理器,我希望在允许我这样做之前更改某些设置),但它没有任何区别。 /> 有什么明显我想念的吗? 我几乎没有网络和数据库开发的背景。提前感谢任何提示。
答案 0 :(得分:3)
Content
属性可能存在默认情况下限制其大小的映射。
尝试使用Content
:
StringLengthAttribute
属性
public class Article
{
[StringLength(4000)]
public string Content { get; set; }
}
答案 1 :(得分:0)
这是使用EF4.1 RC吗?
我认为这可能是由varchars的默认长度引起的,它设置为128。
ado.net blog post - 如帖子中所述,您可能需要将maxlength设置得更高。
我认为这是由EF本身测试的,而不是在DB级别测试,这就是为什么你的改变没有帮助。