Linq to SQL не вставляет данные в БД - PullRequest
1 голос
/ 18 марта 2010

У меня здесь небольшое / странное поведение, и я просматриваю Интернет и ТАК, и я не нашел ответа.

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

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

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

Id - int (первичный ключ идентификации) Имя - 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);
    }
}

Как видите, ничто не отвлекает.

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

Странно то, что я создал строку в базе данных вручную, и Id был 2, а не 1 (Действительно ли linq играл с базой данных, но не создал строку?)

Есть журнал:

INSERT INTO [dbo] .Person

ЗНАЧЕНИЯ (@ p0)

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

- @ p0: ввод NChar (размер = 10; Prec = 0; масштаб = 0) [Jesus]

- Контекст: SqlProvider (Sql2005) Модель: AttributedMetaModel Сборка: 3.5.30729.4926

SELECT [t0]. [Id], [t0]. [Name] ОТ [dbo]. [Person] AS [t0]

- Контекст: SqlProvider (Sql2005) Модель: AttributedMetaModel Сборка: 3.5.30729.4926

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

Спасибо за помощь.

1 Ответ

4 голосов
/ 18 марта 2010

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

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

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

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