在我的DbContext
类中,我有以下内容:
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
但也在我拥有的特定模型的EntityTypeConfiguration
类中:
{
Property(p => p.Name).HasMaxLength(500);
}
问题是在 Configuration 类中将属性设置为 500 不会生效,EF 仍在验证最大值为 250。
我怎样才能有一个 250 的常规设置,但在每个类中根据需要被流畅的 api 覆盖?
@Lutti 科埃略:我的错误
在 OnModelCreate 方法中添加下面的代码
modelBuilder.Entity<Student>()
.Property(p => p.StudentName)
.MaxLength(500);
如果要为字符串字段指定 500 个字符。
您可以使用">最大长度"属性执行此操作。
我正在创建一个如下所示的示例表。
我的上下文配置。
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
我正在创建一个名为FooEntity的表。
using System;
using System.ComponentModel.DataAnnotations;
namespace Foo.Model
{
public class FooEntity
{
[MaxLength(500)]
public string FooName { get; set; }
}
}
添加此属性后,迁移输出如下所示。 即使给定 250 个字符的限制,它也将在 SQL 中作为 500 个字符传递。
CreateTable(
"dbo.FooEntity",
c => new
{
FooName = c.String(maxLength: 500)
});