LinqToSql调用默认方法

时间:2016-07-15 09:46:57

标签: sql-server linq-to-sql

我有一个名为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。 我不太确定如何调用这个问题所以如果你知道一个更正确的标题,请随时编辑它。

1 个答案:

答案 0 :(得分:1)

我认为ColumnAttribute.IsDbGenerated正是您所寻找的。 在类映射中使用类似:

class Article 
{
    [Column(..., IsDbGenerated = true)]
    public DateTime CDTimeStamp { get; set; }
...