我的数据库中有这个表
表项目
ProjectId (int), ProjectName (varchar(50)), ProjectCreationDate(datetime2(7))
ProjectId是身份
ProjectName不允许为null,没有默认值
ProjectCreationDate具有默认绑定(sysdatetime())
我创建了一个ADO.NET EDM并尝试插入表
using (ProjectEntities context = new ProjectEntities()){
Project p = Project{
ProjectName = "ADO"
};
context.Projects.AddObject(p);
context.SaveChanges();
}
问题是ProjectCreationDate列填充了0001-01-01 00:00:00.0000000
,而我期望数据库本身将填充当前时间。
我的数据库中有其他表使用默认值绑定,稍后将更改该值。因此,设置StoreGeneratedPattern = "computed"
不是我要寻找的解决方案。
有什么想法吗?
答案 0 :(得分:1)
这可能不是你想听到的,但其中一个解决方案是在构造函数中定义默认值:
public partial class Project
{
public Project()
{
ProjectCreationDate = DateTime.Now;
}
}
答案 1 :(得分:1)
LukLed爵士是正确的,或者如果你想在你的表中添加默认值或绑定。
right click your table name(Table Project)
, choose Design
,Click on your Column Name(ProjectCreationDate) that you want to create default value
On Column Properties, click on Default value or binding then add input
getdate().
每次插入数据时,它都会填充ProjectCreationDate。
问候。
答案 2 :(得分:1)
如果您始终希望使用sysdatetime()设置该值,则可以在实体模型中将“Setter”设为私有。该模型不会尝试填充该字段,并且将在表中填充数据库提供的默认值。
答案 3 :(得分:0)
StoreGeneratedPattern = Identity或Computed就可以了。