LinqToSql 调用默认方法

LinqToSql calling default method

我有一个数据库 table 名为 Articles。

Table 存储文章并有一个字段 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 overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

如果我取消注释 //article.CDTimeStamp = DateTime.Now;,则会创建并插入 DateTime,但应该插入 getdate() 默认值,而不是我在程序中创建的值。 我的问题是: 是否有配置条目或类似的东西可以调用默认函数?数据库字段不能为空。

P.S. 我不太确定如何称呼这个问题,所以如果您知道更正确的标题,请随时编辑它。

我想 ColumnAttribute.IsDbGenerated 就是您要找的。 在 class 映射中使用类似的东西:

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