Linq到实体插入错误

时间:2011-05-28 14:48:21

标签: entity-framework sql-server-2008

我的表格中有DateTime类型的字段名称LastUpdated和一个text类型的字段。我使用以下代码:

TransactionLog lg = new TransactionLog();
lg.TransactionTypeId = 2;
**lg.Message** = "Beginning report run for: Obligor Registry ID733058723315465243 Requesting Organization Registry ID 731099717606760920 ";// msg;
// lg.LastUpdated = DateTime.Now;

context.TransactionLogs.Add(lg);
context.SaveChanges();
long referenceNumber = lg.ID;

            return referenceNumber;

我假设文本类型列可以具有无限长文本值。但是当我尝试在消息中添加更多文本时,我收到错误。此外,数据库中的DateTime定义为非空,但指定了默认值GetDate()。如果我没有为LastUpdated列指定日期,则会收到错误:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.

请建议我解决此问题。

1 个答案:

答案 0 :(得分:1)

文本类型列的大小取决于数据库中列的定义。所以它不必接受任何长度的文本。用于创建数据库的不同工具使用不同的默认值。

忽略日期时间列的默认值。一旦在EF模型中指定了不可为空的属性,它将始终发送默认的.NET值1.1.0001。该值无法存储在SQL的DATETIME列中。您必须在应用程序中填写此属性以避免此错误。