2012-04-20 69 views
0

这里是我的代码:在当前上下文中不存在类属性分配?

DistInfo distInfo = new DistInfo 
{ 
    if (reader.GetString(reader.GetOrdinal("GoLiveDate")) == null) { 
     AnticipatedLaunchDate = ""; 
    } 
    else 
    { 
     AnticipatedLaunchDate = reader.GetString(reader.GetOrdinal("GoLiveDate")); 
    } 
}; 

这里是我的类:

public class DistInfo 
{ 
    public string AnticipatedLaunchDate { get; set; } 
} 

跟它AnticipatedLaunchDate不会在当前的背景下存在。如果空字符串为空,是否有其他方法可以分配它?

我建立并运行代码,并将其上线254这是此行出错了:

DistInfo distInfo = new DistInfo 
{ 
    AnticipatedLaunchDate = reader.GetString(reader.GetOrdinal("GoLiveDate")) ?? "" 
}; 

,出现以下错误:

无效尝试时不存在数据读取。

这里是SQL查询返回的数据:

DistID password GoLiveDate FirstBonusRun TechFName TechLName TechEmail TechPhone WebISPFName WebISPLName WebISPEmail WebISPPhone FullFillFName FullFillLName FullFillEmail FullFillPhone FName LName HomePhone Email 
113 !12341 NULL NULL John Doe [email protected] 8015555555           NULL NULL NULL NULL NULL NULL NULL NULL Jane Doe 8015555555 [email protected] 

回答

1

你的领域GoLiveDate包含空值和空是不是DBNull.Value由GetString的返回,
您不能使用?在这种情况下运营商。 (See this question here) 尝试使用此代码。

编辑:

DistInfo distInfo = new DistInfo() {AnticipatedLaunchDate = "Some default value instead of null"}; 
int colOrdinal = reader.GetOrdinal("GoLiveDate"); 
if(!reader.IsDBNull(colOrdinal)) 
{ 
    distInfo.AnticipatedLaunchDate = reader.GetString(colOrdinal); 
} 
return distInfo; 
+0

我看到您已将记录的内容。如上述GoLiveDate为空,并且GetString()返回的DBNull.Value不为null。 – Steve 2012-04-20 22:25:38

+0

即使这不起作用。虽然我能够走得更远。在逐步完成时,会将其传递给!reader.IsDBNull行,但会完全跳过该块。他们原来的人将这个专栏设置为VarChar(50),不确定这是否有所作为。它似乎不想将NULL识别为DbNULL。 – 2012-04-20 22:33:58

+0

没错。如果数据库中的字段包含NULL,那么IsDBNull返回true,并且不应该在使用GetString的块中输入。你不能使用GetString()。您应该为您的AnticipatedLaunchDate设置默认值。我会尝试更新我的答案 – Steve 2012-04-20 22:36:51

相关问题