我将一些小型XML文件解析到EF对象中,然后将它们加载到SQL Server 2008数据库中。EF更新异常:将datetim2数据类型转换为日期时间
表定义:
CREATE TABLE [dbo].[Events](
[ID] IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL,
[EventDate] datetime NULL
)
XML:
<root>
<event date="2012-02-16T13:14:53" />
<event date="2012-02-16T13:14:53" />
<event date="2012-02-15T18:48:32" />
<root>
解析XML:
var events = XDocument.Load(xmlStream)
.Descendants("event")
.Select(x => new Event
{
EventDate = (DateTime?)x.Attribute("date")
});
推到DB:
foreach(var event in events)
{
dbContext.Events.Add(event);
}
dbContext.SaveChanges();
而且我得到以下错误:
System.Data.SqlClient.SqlException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
我周围中搜索并尝试了所有的以下无济于事的:
- 从“2008”更改EDMX“ProviderManifestToken”到“2005年“
- 更改 'StoreGeneratedPattern' 到 ”计算“
- 改变LINQ到XML表达
似乎没有任何工作...跑离开这里的想法...
类似演员的声音失败。虽然它看起来像一个标准格式,但请确认您已获得正确投放的日期。否则,请使用'if(DateTime.TryParse(..)){EventDate = parsedDate; } else {EventDate = null; }' – 2012-02-21 21:42:37
你有调试吗?当您尝试将其添加到上下文时,“EventDate”的值是多少? – 2012-02-21 21:55:43