C# EntityFramework CodeFirst忽略MaxLength
我正在使用SQL Server Compact。对于每个表,我都有一个包含MaxLength属性的配置 我运行Add Migration,它正确地生成了带有maxlength的create列字符串,但当我运行updatedatabase时,该列是使用NVARCHAR(MAX)创建的C# EntityFramework CodeFirst忽略MaxLength,c#,sql-server,wpf,entity-framework,sql-server-ce,C#,Sql Server,Wpf,Entity Framework,Sql Server Ce,我正在使用SQL Server Compact。对于每个表,我都有一个包含MaxLength属性的配置 我运行Add Migration,它正确地生成了带有maxlength的create列字符串,但当我运行updatedatabase时,该列是使用NVARCHAR(MAX)创建的 为什么框架不尊重MaxLength属性?谢谢 请尝试在上下文的OnModelCreating部分中添加类似以下行的内容: modelBuilder.Configurations.Add(new TestConfigu
为什么框架不尊重MaxLength属性?谢谢 请尝试在上下文的
OnModelCreating
部分中添加类似以下行的内容:
modelBuilder.Configurations.Add(new TestConfiguration());
我在这里看到的一切看起来都是对的。唯一与我不同的是,您使用的是SQL Compact Edition。也许这就是问题的根源?也许可以对常规SQL进行测试,看看它是否有效。SQL Server Compact没有nvarchar(max)数据类型-您在哪里看到这个?hi@ErikEJ我在使用LINQPadMaybe是一个LINQPad bug?我执行了SQL:ALTERTABLE Orders alter column Test NVARCHAR(100),并在表的描述中不断看到NVARCHAR(MAX)。
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),
}
}
modelBuilder.Configurations.Add(new TestConfiguration());