62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 是否是有效厂家(投标人)原因说明
/// </summary>
[MaxLength(300)]
[DefaultValue("")]
public string YNRemark { get; set; }
假如mode中我有以上字段,我想在数据库中同时也生默认值,类似如下
create table test(YNRemark varchar(300) not null default ''),请问我应该如何做?
我希望不要每个字段都去设置一变
最好如下面我指定的小数位例子
/// <summary>
/// 用于modelBuilder全局设置自定义精度属性
/// </summary>
public class DecimalPrecisionAttributeConvention
: PrimitivePropertyAttributeConfigurationConvention<DecimalPrecisionAttribute>
{
public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DecimalPrecisionAttribute attribute)
{
if (attribute.Precision < 1 || attribute.Precision > 38)
{
throw new InvalidOperationException("Precision must be between 1 and 38.");
}
if (attribute.Scale > attribute.Precision)
{
throw new InvalidOperationException("Scale must be between 0 and the Precision value.");
}
configuration.HasPrecision(attribute.Precision, attribute.Scale);
}
}
在onmodelcreating加一句话就好了
modelBuilder.Conventions.Add(new DecimalPrecisionAttributeConvention());
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//生成自己定义的表名
modelBuilder.Conventions.Add(new DecimalPrecisionAttributeConvention());
//设置字段映射
modelBuilder.Entity<Plan>()
.Property(u => u.StartDate)
.HasColumnName("StarDate");
//生成存储过程 var destinations = context.Database.SqlQuery<DestinationSummary>("dbo.GetDestinationSummary @p0, @p1", country, keyWords);
modelBuilder.Entity<SysLog>().MapToStoredProcedures();
}
ef有点坑,应该给数据库默认值带到 代码中,有些想用默认的 就不用 填写了,不知道微软为啥不给同步默认值