2010-03-18 2 views
1

У меня здесь немного странное поведение, и я смотрю через Интернет и так, и я не нашел ответа.Linq to SQL не вставляет данные в базу данных

Я должен признать, что это мой первый опыт использования баз данных, я знаю, как использовать их с SQL, но никогда не использовал его на самом деле.

В любом случае, у меня есть проблема с вложением данных в приложение, я просто создал очень простой проект для тестирования этого и еще не решение.

У меня есть пример базы данных с Sql Server

Id - Int (ключ первичной идентичности) Name - NCHAR (10) (не нуль)

таблица называется "Человек", просто как пирог ,

У меня есть это:

static void Main(string[] args) 
{ 
    var db = new ExampleDBDataContext {Log = Console.Out}; 

    var jesus = new Person {Name = "Jesus"}; 

    db.Persons.InsertOnSubmit(jesus); 
    db.SubmitChanges(); 

    var query = from person in db.Persons select person; 

    foreach (var p in query) 
    { 
     Console.WriteLine(p.Name); 
    } 
} 

Как вы можете видеть, ничего extrange.

Это показывает Иисуса в консоли. Но если вы видите данные таблицы, данных нет, просто пусто. Я комментирую создание и вложение объекта, и foreach не печатает вещь (нормальный, данных в базе данных нет)

Странно, что я создал строку в базе данных вручную, а Id - 2 и нет 1 (Был ли на самом деле играет LINQ с базой данных, но это не создает строку?)

Существует журнал:

INSERT INTO [DBO] .Person

VALUES (@ p0)

SELECT CONVERT (Int, SCOPE_IDENTITY()) AS [значение]

- @ p0: Вход NChar (Размер = 10; Prec = 0; Масштаб = 0) [Иисус]

- Контекст: SqlProvider (SQL2005) Модель: AttributedMetaModel Сложение: 3.5.30729.4926

SELECT [t0] [Id], [t0] [Имя] FROM [.. ПСЭ] [Человек] AS [t0]

- Контекст. SqlProvider (SQL2005) Модель: AttributedMetaModel Сложение: 3.5.30729.4926

Я действительно путают, Все блоги/книги использовать этот вид фрагмент для вставки элемента в базу данных.

Благодарим за помощь.

+0

WAG - У вас есть два экземпляра вашей базы данных, с которыми L2S взаимодействует, и один из них вы создаете вручную в строке базы данных. – Will

+0

Вы открыли транзакцию? – Gregoire

+0

Когда вы смотрите на класс Person в дизайнере, отображается ли столбец идентификатора как автогенерированное значение? – tvanfosson

ответ

4

Первый; у вас есть TransactionScope, который охватывает это, что вы еще не совершили.

Однако, более liktely: это база данных файл, который вы развертываете с системой (а не отдельным сервером базы данных)? Если это так, каждый раз, когда вы нажимаете «build» и т. Д., Он копирует версию из вашей папки решений в вывод сборки (bin/debug или bin/release).

Посмотрите в выходной копии сборки; см., если , что был обновлен.

+0

Это особенно вероятно, если вы используете базы данных SQLExpress «user-instance». – pblasucci

+0

Ты один. Как я уже сказал, я тренировался с оракулом и mysql в своем курсе, но я запутался во всех вариантах предложения Sql Server (mdf, sdf и один на сервере, который, как я думаю), Im работает с SQL-сервером CE, потому что я хочу, чтобы некоторые встроенные DB с поддержкой LINQ. Я думаю, что мне нужно открыть и использовать lib, который находится внутри bin, странно, но это решение. Спасибо. –

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