MVC3 - 无法将长文本输入数据库

时间:2011-04-05 21:24:41

标签: mysql asp.net-mvc-3 razor

我在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个单词)的字段中,否则一切正常。然后我得到了一个

  

System.Data.Entity.Validation.DbEntityValidationException   未被用户代码

处理
db.SaveChanges()行出现

错误。我已经尝试将用于存储文章内容的列更改为文本,然后更改为nvarchar(max)(使用Visual Studio的服务器资源管理器,我希望在允许我这样做之前更改某些设置),但它没有任何区别。 /> 有什么明显我想念的吗? 我几乎没有网络和数据库开发的背景。提前感谢任何提示。

2 个答案:

答案 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级别测试,这就是为什么你的改变没有帮助。