2016-03-29 6 views
0

Я работаю с SQL Server Compact. Для каждой таблицы у меня есть Конфигурация, которая содержит свойство MaxLength.EntityFramework CodeFirst Игнорирование MaxLength

Я бегу Add-Migration и правильно генерирует создать столбец строки с MAXLENGTH, но при запуске Update-Database столбец создается с NVARCHAR (MAX)

public class Test{ 
    public string TestField { get; set; } 
} 

public class TestConfiguration : EntityTypeConfiguration<Test> 
    { 
     public TestConfiguration() 
     { 

      Property(o => o.TestField) 
       .HasMaxLength(100); 


     } 
    } 

Мой DB Контекст Класс:

public class PlutoContext : DbContext 
{ 
    public PlutoContext() 
     : base("name=PlutoContext") 
    { 
     this.Configuration.LazyLoadingEnabled = false; 
     Database.SetInitializer<PlutoContext>(null); 
    } 

    public virtual DbSet<Test> Tests { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new TestConfiguration()); 
    } 

Сформирован миграции

public partial class AddTest : DbMigration 
{ 
    public override void Up() 
    { 
     CreateTable(
      "dbo.Test", 
      c => new 
       { 
        Test = c.String(nullable: false, maxLength: 100), 
    } 

} 

Почему Framework не соблюдает свойство MaxLength? Благодаря!

+0

Все, что я вижу здесь выглядит правильно. Единственное, что отличается от меня, это то, что вы используете SQL Compact Edition. Возможно, это вызывает проблему? Возможно, попробуйте использовать обычный SQL, чтобы убедиться, что он работает. –

+0

SQL Server Compact не имеет типа данных nvarchar (max) - где вы это видите? – ErikEJ

+0

hi @ErikEJ Я использую LINQPad –

ответ

-1

Пожалуйста, попробуйте добавить что-то вроде линии ниже в OnModelCreating части контекста:

modelBuilder.Configurations.Add(new TestConfiguration());