Генерировать столбец ntext / nvarchar при использовании Entity Framework Code First и DBMigration

c# entity-framework entity-framework-6 sql-server-ce

Вопрос

Я хотел бы либо использовать Fluent API, либо аннотации данных, чтобы автоматически генерировать класс миграции базы данных для столбца строки как ntext а не строки фиксированной длины. Как мне это сделать?

При использовании Entity Framework v6 с кодом First и SQL Server Compact 4, учитывая простой класс C #, такой как:

public class GameFile
{
    public string Id { get; set; }        
    public string FileData { get; set; }
    public int FileSize { get; set; }
}

Затем при добавлении новой миграции:

public class GameFile
{
    public string Id { get; set; }        
    public string FileData { get; set; }
    public int FileSize { get; set; }
}

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

public class GameFile
{
    public string Id { get; set; }        
    public string FileData { get; set; }
    public int FileSize { get; set; }
}

Когда база данных обновляется через update-database , таблица будет иметь столбец с именем FileData типа nvarchar(4000) .

Я попытался добавить атрибут MaxLength и / или Column к свойству FileData , но изменений в сгенерированном коде перехода нет.

public class GameFile
{
    public string Id { get; set; }        
    public string FileData { get; set; }
    public int FileSize { get; set; }
}

Я знаю, если я вручную отредактирую код миграции, чтобы явно объявить storeType :

public class GameFile
{
    public string Id { get; set; }        
    public string FileData { get; set; }
    public int FileSize { get; set; }
}

что результирующая таблица создается правильно.

Популярные ответы

Похоже, ошибка исправлена ​​для Entity Framefork v6.1.3.

Следующее определение работает как ожидалось - создает столбец ntext .

[Column(TypeName = "ntext")]
public string FileData { get; set; }



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему