2012-11-27 68 views
0

在我的Appraisal表中,我有一个名为“AppraisalTrace”的字段,它引用了另一个表。这个字段是一个int,它可以为null,因为我希望能够在没有AppraisalTrace的情况下创建一个评估。我正在使用xsd来加入数据库和代码。将可为空的int设置为空

在我的代码

现在,当我创建一个评价我做了以下内容:

oAppraisalRow.SetAppraisalTraceNull(); 

是由数据行提供了这个自动生成的方法,但它抛出以下异常,当我尝试插入与空评估测评:

Value for column "AppraisalTrace" in table "Appraisal" is DBNull 

那么,我该如何创建我的评估? 在此先感谢!

+1

什么是“SetAppraisalTraceNull”?它的代码是什么? – Oded

+1

@Oded:这是强类型'DataRow'的自动生成方法,它将可为空的字段设置为null。 –

回答

0

我假设您在尝试从可空字段中检索值时得到此异常。您的强类型DataRow还有一个自动生成的bool属性,指示该字段是否为DBNull。您必须使用:

if(oAppraisalRow.IsAppraisalTraceNull) 
{ 
    // this causes your exception, so don't access a nullable field directly 
    var trace = oAppraisalRow.AppraisalTrace; 
} 
else 
{ 
    // here you can safely get the value 
    var trace = oAppraisalRow.AppraisalTrace; 
} 

所以首先检查该字段为空与bool财产。

+0

不,我在尝试在数据库中插入具有空AppraisalTrace的评估时遇到此异常 –

+0

它可以在数据库中为空,或者在未刷新您的'TableAdapter'之后将其更改为不可为空? –

+0

TableAdapter将AllowDBNull设置为true,数据库也允许为空。事情是,NullValue被设置为“抛出异常”,不能设置为空也不为空,因为int不能为空。那我该怎么办? –