System.InvalidOperationException: обнуляемый объект должен иметь значение. Linq to sql - PullRequest
2 голосов
/ 28 марта 2012

Я получаю эту ошибку на одном из моих машин для разработки. Эта ошибка не происходит на другом компьютере, который указывает на ту же базу данных. Определенно оба сервера не идентичны. Я не знаю, какое программное обеспечение отсутствует на одном сервере, вызывает эту проблему. Обе машины работают под управлением одной и той же ОС 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 Ответ

1 голос
/ 29 марта 2012

Не могу воспроизвести исключение в сопоставимом случае, но часть _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 не имеет значения null.

...