System.InvalidOperationException:Nullable对象必须具有值。 Linq to sql

时间:2012-03-28 00:01:52

标签: linq-to-sql invalidoperationexception

我在我的某台开发机器中遇到此错误。在指向同一数据库的其他计算机中不会发生此错误。肯定两个服务器都不相同。我不知道一台服务器中缺少的软件会导致此问题。两台机器都运行相同的OS 2008 R2。

using (MYDB.MyDB oDB = new MYDB.MyDB())
        {
            var query = from t in oDB.Products
                        where (_ProductId.HasValue?_ProductId==t.Productid:true)
                        select new Product()
                       {
                           ProductId = t.Productid,
                           ManufacturerId = t.Manufacturerid,
                           ManufacturingNumber = t.Manufacturingnumber,
                           CustomProduct = t.Iscustomproduct ? "Yes" : "No",
                           IsCustomProduct = t.Iscustomproduct,
                           SubCategoryName = t.Subcategory.Subcategoryname
                       };
            return query.ToList();
        }

非常感谢任何帮助

谢谢, Senthilkumar

1 个答案:

答案 0 :(得分:1)

我无法在类似的情况下重现异常,但_ProductId.HasValue?_ProductId==t.Productid:true部分看起来很可疑。我会改变它如下,如果你很幸运它也解决了你的问题,否则它无论如何都是一个改进:

var query = from t in oDB.Products;
if (_productId.HasValue)
{
    query = query.Where(t => t.Productid == _productId.Value);
}
query = query.Select(t => new Product() {...

另一个原因可能是Product.ProductId不是可以为空的。