首先为Entity Framework代码中的所有字符串设置MaxLength

Dar*_*ght 3 c# asp.net-mvc entity-framework ef-code-first

我正在使用Entity Framework 6开发代码优先数据库.

我知道我可以设置[MaxLength(myLen)]模型的属性.

我想知道的是,如果可以在过滤器或自定义属性中执行此操作,那么所有字符串都采用默认值,即250,除非直接在属性上指定.

如果做不到这个,有没有办法改变默认值nvarchar(max)

Col*_*lin 8

实体框架在6.1中为此引入了自定义代码优先约定

modelBuilder.Properties<string>()
            .Configure(c => c.HasMaxLength(250));
Run Code Online (Sandbox Code Playgroud)

约定以最后的方式运行,Fluent API和Data Annotations可用于在特定情况下覆盖约定


gre*_*g84 5

您可以这样做,这可以确保所有字符串都是数据库提供程序支持的最大长度:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Properties<string>().Configure(p => p.IsMaxLength());
    }
Run Code Online (Sandbox Code Playgroud)

在您的DbContext类中添加此方法(或修改现有方法).