C#ADO.NET使用默认值插入新行

时间:2011-02-12 00:42:27

标签: c# .net entity-framework sql-server-2008

我的数据库中有这个表

表项目
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"不是我要寻找的解决方案。

有什么想法吗?

4 个答案:

答案 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就可以了。