诠释?不适用于db nulls

时间:2016-07-08 05:43:12

标签: c# asp.net sql-server entity-framework

所以我认为(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,但存储过程会返回自定义数据,因此我采用了这种方式。

1 个答案:

答案 0 :(得分:2)

据我所知,Field扩展方法支持可空类型。所以,下面的行应该是一个魅力:

VehicleClassID = row.Field<int?>("VehicleClassID");