2010-05-18 4 views
1

Я создал базу данных и dbml в visual studio 2010 с помощью своих мастеров. Все работало нормально, пока я не проверил данные таблиц (также в visual studio server explorer), и ни одно из моих обновлений не было.LinqToSQL не обновляет базу данных

using (var context = new CenasDataContext()) 
{ 
    context.Log = Console.Out; 
    context.Cenas.InsertOnSubmit(new Cena() { id = 1}); 
    context.SubmitChanges(); 
} 

Это код, который я использую для обновления моей базы данных. На данный момент моя база данных имеет одну таблицу с одним полем (PK) с именем ID.

** INSERT INTO [DBO] .Cenas ЗНАЧЕНИЯ (@ p0) - @ р0: Входной сигнал Int (размер = -1; Prec = 0; Шкала = 0) [1] - Контекст: SqlProvider (SQL2008) Модель: AttributedMetaModel Сложение: 4.0.30319.1 **

Это LOG от исполнения (печатал журнал контекста в консоль).

Проблема, с которой я сталкиваюсь, заключается в том, что эти обновления не сохраняются в базе данных. Я имею в виду, что когда я запрашиваю мою базу данных (visual studio server explorer -> new query), я вижу, что таблица пуста, каждый раз.

Я использую файл базы данных SQL Server (.mdf).

РЕД (1): Immediate Window результат

context.GetChangeSet() 
{Inserts: 1, Deletes: 0, Updates: 0} 
    Deletes: Count = 0 
    Inserts: Count = 1 
    Updates: Count = 0 
context.GetChangeSet().Inserts 
Count = 1 
    [0]: {DBTest.Cena} 

ответ

0

Если вы построите DataContext без аргументов, он будет извлекать строку подключения из вашего файла App.Config или Web.Config. Откройте тот, который применяется, и убедитесь, что он указывает на одну и ту же базу данных.

+0

Да, это указывает на нужное место;) – codegarten

+0

Я думаю, вы были правы. Проблема заключалась в том, что мастер созданного файла LinqToSql (dbml) с DataContext читает файл Settings.settings, а не App.config. Поэтому я был уверен, что это доступ к правильной базе данных, но это не так. Я даже не знаю, что он делал << Примечание для себя: не доверяйте волшебникам. – codegarten

0

Поставьте точку останова на context.SubmitChanges(); и в вашем ближайшем окне в VS, do:

context.GetChangeSet(); 

Есть свойство inserts, и оно должно иметь одну запись. Это поможет определить, запущен ли он в очередь.

HTH.

+0

Результаты находятся в ОП. – codegarten

+0

Спасибо, я опубликовал перед редактированием. –

Смежные вопросы