我想使用注释在Entity Framework Core中为我的属性设置默认值。问题是数据库没有设置默认值,因此值不会传递给数据库层。
我想做类似于modelBuilder
的HasDefaultValueSql
:
[DefaultValue("400")]
public int LengthInMeters {get; set;}
如何将以下代码转换为属性?
modelBuilder.Entity<Patient>().Property(c => c.LengthInMeters).HasDefaultValueSql("400");
单独使用默认值不起作用。我想单独使用属性而不必混淆迁移。
问题:我尝试过使用EF的其他方法,但实体框架核心没有一些项目。如modelBuilder.Conventions
也不是AttributeToColumnAnnotationConvention
也不是CSharpMigrationCodeGenerator
也不是modelBuilder.Properties()
This is what I ended up doing,如果某人有清洁工具而不是强化实施方式,请告诉我。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
foreach (var property in entityType.GetProperties())
{
var memberInfo = property.PropertyInfo ?? (MemberInfo)property.FieldInfo;
if (memberInfo == null) continue;
var defaultValue = Attribute.GetCustomAttribute(memberInfo, typeof(DefaultValueAttribute)) as DefaultValueAttribute;
if (defaultValue == null) continue;
property.SqlServer().DefaultValue = defaultValue.Value;
}
}
}
我可以使用默认值属性在数据库中设置默认值
[DefaultValue("400")]
public int LengthInMeters {get; set;}