LINQ InsertOnSubmit Обязательные поля, необходимые для отладки - PullRequest
1 голос
/ 13 апреля 2010

Я использую модель наборов данных ADO.NET в режиме Strogly-Typed уже около 2 лет для обработки CRUD и выполнения хранимых процедур. В прошлом году я создал свое первое приложение MVC, и я действительно наслаждался простотой и гибкостью LINQ. Возможно, самым большим преимуществом для меня было то, что с LINQ мне не нужно было создавать хранимые процедуры «Вставка», которые бы больше возвращали SCOPE_IDENTITY (автоматически сгенерированные операторы вставки в модели DataSet не могли этого сделать без изменений). 1001 *

В настоящее время я использую LINQ с ASP.NET 3.5 WebForms. Мои вставки выглядят так:

ProductsDataContext dc = new ProductsDataContext();
product p = new product 
{
        Title = "New Product",
        Price = 59.99,
        Archived = false
};

dc.products.InsertOnSubmit(p);
dc.SubmitChanges();

int productId = p.Id;

Итак, этот пример продукта довольно прост, верно, и в будущем я, вероятно, добавлю больше полей в базу данных, таких как "InStock", "Количество" и т. Д ... Как я понимаю, Мне нужно будет добавить эти поля в таблицу базы данных, а затем удалить и повторно добавить таблицы в представление проектирования класса LINQ to SQL, чтобы обновить DataContext. Это звучит правильно?

Проблема в том, что любые новые поля, которые не являются нулевыми, НЕ перехватываются процессами сборки ASP.NET. Например, если я добавлю ненулевое поле «Количество» в базу данных, приведенный выше код все равно будет построен. В модели DataSet метод хранимой процедуры будет принимать определенное количество параметров и будет предупреждать меня, что моя вставка не будет выполнена, если я не включу количественное значение. То же самое относится и к методам хранимых процедур LINQ, однако, насколько мне известно, LINQ не предлагает способ автоматической генерации операторов вставки, а это означает, что я вернулся к тому, с чего начал.

Суть в том, что если бы я использовал оператор вставки, подобный приведенному выше, и добавил бы ненулевое поле в свою базу данных, это сломало бы мое приложение примерно в 10-20 местах, и я не смог бы его обнаружить , Могу ли я выполнить поиск на стороне решения по ключевому слову «products.InsertOnSubmit» и убедиться, что новое поле получает присвоение?

Есть ли лучший способ?

Спасибо!

1 Ответ

0 голосов
/ 13 апреля 2010

Создать поле NON-Null со значением по умолчанию. Таким образом, старые строки будут иметь значение по умолчанию, о котором вы знаете, что позволит вам вернуться назад и добавить значения в таблицу.

...