如何为sql实体列分配null

时间:2008-10-21 18:12:20

标签: linq linq-to-sql

我已经生成了linq到sql entites,但无法弄清楚如何将null赋给可空列。每当我尝试为它分配null时,它说“int和”之间没有隐式类型转换。 BTW字段的类型是int?数据库列也可以为空。

6 个答案:

答案 0 :(得分:1)

尝试将其指定为System.DBNull

答案 1 :(得分:0)

似乎该列不是真的可以为空。检查列的属性,看它确实被标记为可为空。如果不是,请检查数据库模型,并尝试重新创建 LINQ to SQL 模型(如果它在数据库中可以为空)。

请注意,您不能简单地在 LINQ to SQL 模型中将其标记为可为空,而不是在数据库中,因为这些类型的差异可能会导致您的 LINQ to SQL 模特停止工作。

发布修改后更新:我可以看到字段类型为int?,与Nullable<int>相同,因此将其设置为null应该没有问题。但是,获取整数值时,应使用Value的{​​{1}}属性。这是问题吗?

答案 2 :(得分:0)

通常,在将数据库值分配或比较为null时,我必须使用DBNULL.Value。

答案 3 :(得分:0)

您只需要将{numlable属性]赋予null。当使用linq-to-sql实体时,我从不必须为System.DBNull分配或测试。

听起来生成的实体类已被手动修改或已从数据库中过时。

供您参考,以下是可空和不可为空的整数字段:

private int? _someID;
/// <summary>
/// Gets or sets the SomeID.
/// </summary>
[Column(Name="SomeID", Storage="_someID", DbType="INT", UpdateCheck=UpdateCheck.Never)]
public int? SomeID
{

private int _someOtherID;
/// <summary>
/// Gets or sets the SomeOtherID.
/// </summary>
[Column(Name="SomeOtherID", Storage="_someOtherID", DbType="INT NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
public int SomeOtherID
{

检查生成的实体是否与上面类似。

答案 4 :(得分:0)

你写了'字段的类型是int?' 我想这就是问题所在:字段的类型应该是 int(没有?),属性'允许空值'应设置为 true

在设计器中,您可以将字段类型更改为 int?,而不是 int 和“允许null ”,但是您遇到了所有字段这种方式有点麻烦(你可能已经注意到了)。

答案 5 :(得分:0)

当您尝试在实体中显式创建具有可为空列的数据库集时。

new Nullable()就是你要找的。

someEntity newEntity = new someEntity()
{
   aNullableInt = new Nullable<Int32>()
};