2016-07-15 150 views
0

我有一个名为Articles的表的数据库。LinqToSql调用默认方法

该表存储文章并具有字段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()默认值,而不是我在程序中创建的值。 我的问题是: 是否有一个配置条目或类似的东西,使默认功能的调用?数据库字段可能不为null。

P.S. 我不太清楚如何调用这个问题,所以如果你知道更正确的标题,请随时编辑它。

回答

1

我认为ColumnAttribute.IsDbGenerated是你在找什么。 在类映射中使用类似于:

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

非常简单的答案谢谢。仅供参考在dbml资源管理器中,我可以设置一个名为“Auto Generated Value”的属性,然后生成IsDbGenerated属性。 – Bongo