我已经生成了linq到sql entites,但无法弄清楚如何将null赋给可空列。每当我尝试为它分配null时,它说“int和”之间没有隐式类型转换。 BTW字段的类型是int?数据库列也可以为空。
答案 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()就是你要找的。 p>
someEntity newEntity = new someEntity()
{
aNullableInt = new Nullable<Int32>()
};