如何在Entity Framework中将字段设置为DBNull

9

如何在Entity Framework中将字段设置为DBNull?由于字段是强类型的,因此无法将其设置为DBNull.Value,并且我没有找到任何将字段设置为DBNull的方法。这似乎是必要的事情,但经过大量的谷歌研究,我没有找到任何相关信息。

我正在尝试使用vb.net在Entity Framework中设置datetime字段。这需要我编写以下代码:

 myEntity.mydate = Nothing

这并不是将字段设置为null,而是将其设置为默认日期值,这不是SQL Server中的有效日期值。

3个回答

16
如果数据库中的列可以为空,则结果类也将具有可空属性。
例如,如果“Order”表具有可为空的名为“CreatedDate”的“Datetime”列,则生成的“Order”类将大致如下:
public partial class Order: EntityObject
{
  ...
  private DateTime? _createdDate;
  ...
}
如果在调用 ObjectContext.SaveChanges() 时,_ createdDate 没有值,那么 System.DBNull 将自动作为插入或更新命令的一部分发送到数据库。
希望这可以帮助。 Alex

2
是的,亚历克斯。问题出在我这边。我以为可为空的字段实际上是不可为空的。 - Eric

10
将字段值设置为null。Entity Framework将把它翻译成System.DBNull

首先,您应该在适当的数据库字段值上接受空值。 - Blerta
1
我正在使用vb.net,它没有Nulls的概念。因此,我必须使用Nothing,它会将日期设置为默认值,而不是Null。 - Eric
1
@Eric VB.NET中的“Nothing”相当于C#中的“null”。 - splattne
这对我没有起作用,没有出现任何问题。行没有被更新。 - mzonerz

0
我从未使用过实体框架,但是你能将一个变量转换为可为空的类型吗?
类似这样的:
dim entityVar as nullable(of date)

那么你可以执行= nothing,它将保持为空。

但是像我说的,我从未使用过实体框架。

在谷歌上搜索时,我发现了Microsoft Connect上的错误报告


1
我在model.designer.vb文件中将其设置为可空,但仍然无法将其设置为null。那个错误报告与我的问题类似。一定有办法解决这个问题。你不会认为他们会发布没有在vb.net中将数据库值设置为null的实体框架。 - Eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接