所以我认为(int?)的意思是如果db为null则采用int或null。但是我收到了错误
其他信息:指定的演员表无效。
VehicleGroupID
是给出错误的那个,因为它在数据库中是NULL。它是(int?)所以它应该能够接受空值吗?那不是(int?)的意思吗?如果没有,那么允许空值的最干净的解决方案是什么,因为实际上我必须从数据库获得更多可空的内容。
这是我的代码:
public int? VehicleClassID { get; set; }
public int? VehicleGroupID { get; set; }
public void getVehicleModelDetails ()
{
DataSet retVal = new DataSet();
SqlConnection sqlConn = (SqlConnection)_context.Database.Connection;
SqlCommand cmdReport = new SqlCommand("storedProc", sqlConn);
SqlDataAdapter daReport = new SqlDataAdapter(cmdReport);
using (cmdReport)
{
cmdReport.CommandType = CommandType.StoredProcedure;
daReport.Fill(retVal);
}
// Set buyer vehicle details
var row = retVal.Tables[0].Rows[0];
VehicleClassID = (int?)row["VehicleClassID"];
VehicleGroupID = (int?)row["VehicleGroupID"];
}
仅供参考:我使用的是EF6,但存储过程会返回自定义数据,因此我采用了这种方式。
答案 0 :(得分:2)
据我所知,Field
扩展方法支持可空类型。所以,下面的行应该是一个魅力:
VehicleClassID = row.Field<int?>("VehicleClassID");