MVC3 - не могу ввести длинный текст в базу данных - PullRequest
0 голосов
/ 06 апреля 2011

Я делаю чрезвычайно простую CMS в ASP.NET MVC 3 (только для изучения), но у меня возникли сложности. Я использую 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 (с использованием движка бритвы), ничего не меняя. Все работает нормально, если я не пытаюсь ввести более длинный текст в поле для свойства "content" (более 20 или 30 слов). Тогда я получаю

System.Data.Entity.Validation.DbEntityValidationException был не обработан кодом пользователя

ошибка в строке db.SaveChanges (). Я попытался изменить столбец, который я использую для хранения содержимого статей, на текст, а затем на nvarchar (max) (используя обозреватель серверов Visual Studio, мне пришлось изменить некоторые настройки, прежде чем он позволил мне это сделать), но это не имело никакого значения.
Есть ли что-то очевидное, что мне не хватает? У меня практически нет опыта в веб-разработке и разработке баз данных. Заранее благодарим за любые подсказки.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Вероятно, существует сопоставление для свойства Content, которое по умолчанию ограничивает его размер. Попробуйте украсить свойство Content вашей модели с помощью StringLengthAttribute:

public class Article
{
    [StringLength(4000)]
    public string Content { get; set; }
}
0 голосов
/ 06 апреля 2011

Используется ли EF4.1 RC?

Я полагаю, что это может быть вызвано длиной по умолчанию varchars, которая установлена ​​в 128.

сообщение в блоге ado.net - как указано в сообщении, вам может потребоваться установить максимальную длину выше.

Я считаю, что это проверено самой EF, а не на уровне БД, и поэтому ваши изменения не помогли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...