我是EF Core 2的新手,正在尝试创建不为null且默认值为空白的Entity属性。我正在使用流畅的API。最终结果是SqlServer端的默认数据绑定N'('''')'。我可以肯定这是一个错误,但是有一个已知的解决方法吗?
我已经尝试了字符串操作来解决多余的撇号以及一个变量。但是,当我查看迁移脚本时,它是正确的,因此它似乎发生在更新数据库与服务器通信过程之间,并且不受我的控制。
public class EfficacyDBContext : DbContext
{
public virtual DbSet<Person> Person { get; protected set; }
public virtual DbSet<PersonType> PersonType { get; protected set; }
public EfficacyDBContext(DbContextOptions options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new PersonEntityTypeConfiguration());
modelBuilder.ApplyConfiguration(new PersonTypeEntityTypeConfiguration());
}
}
public class PersonEntityTypeConfiguration : IEntityTypeConfiguration<Person>
{
public void Configure(EntityTypeBuilder<Person> builder)
{
builder.ToTable("Person.Person");
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.Property(x => x.FirstName).HasMaxLength(50)
.HasDefaultValue("('')").IsRequired();
}
}
在SqlServer端,我希望不输入任何内容时该字段默认为空值。但是,由于数据绑定偏斜,我得到了默认值('')
答案 0 :(得分:1)
您使用的HasDefaultValue方法不正确。当您传递 SQL片段时,它期望一个 value 。支持后者,但是通过另一种方法-HasDefaultValueSql。
所以要么使用
.HasDefaultValue("")
或
.HasDefaultValueSql("('')")
参考:EF核心文档-Default Values