实体框架代码优先模型生成器



在我的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)
});

相关内容

  • 没有找到相关文章

最新更新