Как указать, что свойство должно генерировать столбец ТЕКСТ, а не nvarchar (4000)

Я работаю с функцией Code First Entity Framework и пытаюсь понять, как я могу указать типы данных столбцов, которые должны создаваться при автоматическом создании базы данных.

У меня простая модель:

public class Article
{
    public int ArticleID { get; set; }

    public string Title { get; set; }
    public string Author { get; set; }
    public string Summary { get; set; }
    public string SummaryHtml { get; set; }
    public string Body { get; set; }
    public string BodyHtml { get; set; }
    public string Slug { get; set; }

    public DateTime Published { get; set; }
    public DateTime Updated { get; set; }

    public virtual ICollection Comments { get; set; }
}

Когда я запускаю свое приложение, автоматически создается база данных SQL CE 4.0 со следующей схемой:

DB Schema

Пока все хорошо! Однако данные, которые я буду вставлять в свойства Body и BodyHtml , обычно больше максимально допустимой длины для типа столбца NVarChar , поэтому мне нужен EF для создания текстовых столбцов для этих свойств.

Однако я не могу найти способ сделать это! После небольшого поиска в Google и чтения я попытался указать тип столбца, используя DataAnnotations , из информации, найденной в , этот ответ :

using System.ComponentModel.DataAnnotations;

...

[Column(TypeName = "Text")]
public string Body { get; set; }

Это вызывает следующее исключение (когда база данных удаляется, и приложение запускается повторно):

Schema specified is not valid. Errors: (12,6) : error 0040: The Type text is not qualified with a namespace or alias. Only PrimitiveTypes can be used without qualification.

Но я понятия не имею, какое пространство имен или псевдоним мне следует указать, и я не мог найти ничего, что могло бы мне сказать.

Я также попытался изменить аннотацию как на эту ссылку :

using System.Data.Linq.Mapping;

...

[Column(DbType = "Text")]
public string Body { get; set; }

В этом случае создается база данных , но столбец Body по-прежнему является NVarChar (4000) , поэтому кажется, что аннотация игнорируется.

Кто-нибудь может помочь? Кажется, что это должно быть довольно распространенное требование, но мои поиски оказались бесплодными!

49
задан Community 23 May 2017 в 02:26
поделиться