在设计数据库时使用了数据库默认字段的方法,设置了默认值
create table EAS.T_userLevel ( UL_ID INTEGER not null, UL_userLevel2 INTEGER default 0 not null, UL_userLevelTime2 DATE default sysdate not null );
,但插入数据库的数据显示如下:

第一个字段UL_userLevel2生成的数据默认值是0,没有问题,但第二个字段UL_userLevelTime2默认值却是1-01-01 00:00:00很奇怪,
想了很长时间才发现原来是因为我使用ORM映射,不允许字段为空,导致系统给字段设置了默认值,导致数据库的默认值被覆盖了。
public class UserLevel : EasActiveRecordCRUDEx<UserLevel>
{
[PrimaryKey(PrimaryKeyType.Sequence, "UL_ID", SequenceName = "EAS.Seq_userLevel")]
public int UL_ID
{
get;
set;
}
/// <summary>
/// 员工
/// </summary>
[Property]
public int UL_user_FK
{
get;
set;
}
/// <summary>
/// 等级
/// </summary>
[Property]
public int UL_userLevel2
{
get;
set;
}
/// <summary>
/// 绩效等级
/// </summary>
[Property]
public string UL_userLevel2A
{
get;
set;
}
/// <summary>
/// UL_userLevel2 的评定时间
/// </summary>
[Property]
public DateTime UL_userLevelTime2
{
get;
set;
}
}
如果如下就可以使用数据库的默认值了
public DateTime? UL_userLevelTime2
{
get;
set;
}
看来最安全的默认值方法还是构造函数
public UserLevel()
{
this.UL_userLevelTime2 = DateTime.Now;
}
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/database/6685.html