![](/img/trans.png)
[英]Entity Framework: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value C#
[英]'Datetime2 to a Datetime resulted in out-of-range value' when using TimeSpan with Entity Framework
我的SQL Server数据库中有一个表,其中包含几个time(7)
(允许NULLS)列。 我的应用程序使用实体框架将实体存储在数据库中。
我将Nullable<TimeSpan>
用作与SQL Server数据库中的“允许NULLS time(7)”相对应的数据类型。 在添加具有TimeSpan?
的实体后执行SaveChanges()
TimeSpan?
列,它抛出一个ListInternalException说众所周知的
“将datetime2数据类型转换为datetime数据类型导致值超出范围。”
我之前已经遇到过此异常,并且知道这是因为.Net datetime mi值低于SqlDateTime.MinValue
。 但是在这里,我们没有可追溯的日期。 此外,我的属性和列类型为Nullable,并且当我将属性设置为Null时,异常仍然存在。
有什么建议如何解决这个问题?
CREATE TABLE [dbo].[MyEntity]
(
[Id] [uniqueidentifier] NOT NULL,
[AssociationId] [uniqueidentifier] NOT NULL,
[IsMondayDayOff] [bit] NOT NULL,
[IsTuesdayDayOff] [bit] NOT NULL,
[IsWednessdayDayOff] [bit] NOT NULL,
[IsThursdayDayOff] [bit] NOT NULL,
[IsFridayDayOff] [bit] NOT NULL,
[IsSaturdayDayOff] [bit] NOT NULL,
[IsSundayDayOff] [bit] NOT NULL,
[MondayFrom] [time](7) NULL,
[TuesdayFrom] [time](7) NULL,
[WednesdayFrom] [time](7) NULL,
[ThursdayFrom] [time](7) NULL,
[FridayFrom] [time](7) NULL,
[SaturdayFrom] [time](7) NULL,
[SundayFrom] [time](7) NULL,
[MondayTo] [time](7) NULL,
[TuesdayTo] [time](7) NULL,
[WednessdayTo] [time](7) NULL,
[ThursdayTo] [time](7) NULL,
[FridayTo] [time](7) NULL,
[SaturdayTo] [time](7) NULL,
[SundayTo] [time](7) NULL,
CONSTRAINT [PK_MyEntity]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PK_MyEntity] WITH CHECK
ADD CONSTRAINT [FK_PK_MyEntity_PK_MyAssociation]
FOREIGN KEY([FBOId]) REFERENCES [dbo].[MyAssociation] ([Id])
GO
ALTER TABLE [dbo].[MyEntity] CHECK CONSTRAINT [FK_MyEntity_MyAssociation]
GO
我的实体:
public class MyEntity
{
public Guid Id { get; set; }
public Guid OtherTableId { get; set; }
public bool IsMondayDayOff { get; set; }
public TimeSpan? MondayFrom { get; set; }
public TimeSpan? MondayTo { get; set; }
public bool IsTuesdayDayOff { get; set; }
public TimeSpan? TuesdayFrom { get; set; }
public TimeSpan? TuesdayTo { get; set; }
public bool WednesdayOff { get; set; }
public TimeSpan? WednesdayFrom { get; set; }
public TimeSpan? WednesdayTo { get; set; }
public bool ThursdayOff { get; set; }
public TimeSpan? ThursdayFrom { get; set; }
public TimeSpan? ThursdayTo { get; set; }
public bool FridayOff { get; set; }
public TimeSpan? FridayFrom { get; set; }
public TimeSpan? FridayTo { get; set; }
public bool SaturdayOff { get; set; }
public TimeSpan? SaturdayFrom { get; set; }
public TimeSpan? SaturdayTo { get; set; }
public bool SundayOff { get; set; }
public TimeSpan? SundayFrom { get; set; }
public TimeSpan? SundayTo { get; set; }
public virtual AnotherEntity Association { get; set; }
}
实际的问题不是EF如何处理time(7)和TimeSpan数据类型,而是MyEntity的第二级关联(关联的关联)具有datetime2列,在将实体添加到数据库时未提供。 按照注释中的@sepupic建议使用SQL Server Profiler查找它。 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.