尽管在SO上有许多关于此问题的线程,但我仍然苦苦挣扎无法解决它。
我有一个类,其中有一个可空的DateTime?
字段,如下所示:
public class ActiveItem
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Nullable<DateTime> TimeStarted { get; set; }
public Nullable<DateTime> LastHeard { get; set; }
}
我有一个定义为:
数据库模式:CREATE TABLE [dbo].[ActiveItems] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[TimeStarted] DATETIME NULL,
[LastHeard] DATETIME NULL,
CONSTRAINT [PK_ActiveWorkflows] PRIMARY KEY CLUSTERED ([ID] ASC)
);
我试图保存一个 `ActiveItem`,其中 `TimeStarted` 和 `LastHeard` 为 null。但是,当我尝试这样做时,会出现以下错误:
“无法将空值插入到列 'TimeStarted' 中,表 'dbo.ActiveItems';该列不允许为空。INSERT 失败。\r\n语句已终止。”
我似乎无法解决这个问题。
奇怪的是,我可以登录 SQL 服务器并在表中创建一个具有 null 值的行。这是因为 Entity Framework 出了问题吗?
__MigrationHistory
表。 - gnychisSqlParameter.Value = DbNull.Value
。如果你将值设置为c# null
,SqlParameter会失败。有趣的是,Oracle ODP.NetOracleParameter
可以同时处理null
和DbNull.Value
。 - T.S.