我有一个名为Articles的表的数据库。
表存储文章并具有字段CDTimeStamp。 CDTimestamp字段已经改变,因此它始终具有正确的创建日期:
ALTER TABLE [dbo].[Artikel] ADD CONSTRAINT [DF_Artikel_CDTimeStamp] DEFAULT (getdate()) FOR [CDTimeStamp]
GO
因此,如果我尝试添加文章,我会收到错误消息。 文章添加如下:
public void AddArticle()
{
this.Open();
Article article = new Article();
article.Description = "";
article.ArticleNr = GetArticleNumber();
article.Barcode = GetBarcode(); //EAN
article.Branch = GetBranch(); // 3digit number
article.Company = GetCompany(); // 1 or 2
article.Preis = GetPrice();
article.PreisNew = GetNewPrice();
//article.CDTimeStamp = DateTime.Now;
_OutDataContext.Artikel.InsertOnSubmit(article);
try
{
this.Submit();
}
catch (Exception e)
{
throw;
}
this.Close();
}
我得到的错误是:
SqlDateTime溢出。必须在1/1/1753 12:00:00 AM之间 12/31/9999 11:59:59 PM。
如果我取消注释//article.CDTimeStamp = DateTime.Now;
,则会创建并插入DateTime,但应插入getdate()默认值,而不是我在程序中创建的值。
我的问题是:
是否有配置条目或类似的东西可以调用默认函数?数据库字段可能不为空。
P.S。 我不太确定如何调用这个问题所以如果你知道一个更正确的标题,请随时编辑它。
答案 0 :(得分:1)
我认为ColumnAttribute.IsDbGenerated
正是您所寻找的。
在类映射中使用类似:
class Article
{
[Column(..., IsDbGenerated = true)]
public DateTime CDTimeStamp { get; set; }
...