Как читать и вставлять обратно в базу данных, используя linq to sql? - PullRequest
0 голосов
/ 09 ноября 2011
  • Сначала я прочитал набор данных из базы данных
  • Вставить новую запись, используя те же данные в той же таблице.

Я пробовал это, но: -

using (var db = new
    DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString()))
{
    var items = from t in db.Table1
                where t.ID.Equals(100)
                select t;
    foreach (var item in items)
    {
        using (var db1 = new
            DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString()))
        {
            Table1 tab = new Table1
            {
                FName = item.FName,
                LName = item.LName,
                Number = item.Number,
            };
            db1.Table1.InsertAllOnSubmit(tab);
            db1.SubmitChanges();
        }
    }
}

Я не могу его скомпилировать.Выдает эту ошибку в строке ' db1.Table1.InsertAllOnSubmit (tab) ': -

'System.Data.Linq.Table.InsertAllOnSubmit (System.Collections.Generic.IEnumerable) 'не может быть выведен из использования.Попробуйте указать аргументы типа явно.

1 Ответ

2 голосов
/ 09 ноября 2011

В вашем коде есть некоторые недостатки.

Кажется, вы читаете одну Таблицу 1 (при условии, что идентификатор уникален), но вы рассматриваете ее как коллекцию

Быстрая попытка, поскольку вы все равно добавляете только однуtable1 одновременно: замените

db1.Table1.InsertAllOnSubmit(tab); 

на

db1.Table1.InsertOnSubmit(tab); 

Если ваш ID не уникален, попробуйте:

List<Table1> items = (from t in db.Table1 
            where t.ID.Equals(100) 
            select t).ToList();

Остальная часть кода может остатьсято же самое (но все равно замените InsertAllOnSubmit)

Обновление

Вы можете упростить bigtime:

using (var db = new 
DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString())) 
 { 
Table1 thisTable = (from t in db.Table1 
            where t.ID. == 100
            select t).SingleOrDefault(); 

if ( thisTable != null)
{
        Table1 tab = new Table1 ()
        { 
            FName = item.FName, 
            LName = item.LName, 
            Number = item.Number,                }; 
            db.Table1.InsertOnsubmit(tab)
            db.SubmitChanges(); 
         }
 } 
}

, если вы уверены на 100%, что ваш идентификаторвсегда соответствует использование .Single () вместо .SingleOrDefault ().Сингл сгенерирует исключение, если не найдено ни одного результата.В этом случае SingleOrDefault возвращает NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...