Не удается обновить строки в моей базе данных, используя Entity Framework ...? - PullRequest
0 голосов
/ 15 мая 2010

Хорошо, это действительно странно. Я сделал простую базу данных с одной таблицей Customer, в которой есть один столбец Name. Из базы данных я автоматически сгенерировал модель данных объекта ADO.NET и пытаюсь добавить в нее нового клиента следующим образом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main()
        {
            Database1Entities db = new Database1Entities();
            Customer c = new Customer();
            c.Name = "Harry";
            db.AddToCustomer(c);
            db.SaveChanges();
        }
    }
}

Но оно не сохраняется Заказчик "Гарри" в базе данных! Некоторое время я чесал голову, удивляясь, почему такая простая операция не работает. В чем может быть проблема!?

Ответы [ 4 ]

1 голос
/ 15 мая 2010

EF требует, чтобы у вас был уникальный индекс для многих операций.

Попробуйте добавить поле идентификатора (первичный ключ) к вашей таблице. Удалите и заново создайте модель и попробуйте снова.

Edit:

Похоже, вы запускаете это из консольного приложения.

  • У вас есть строка подключения в файле app.config?
  • У вас есть более одного проекта в вашем решении?
  • Вы получаете какие-либо исключения?

Edit2:

Следующие вещи попробовать:

  • Используйте профилировщик SQL Server, чтобы увидеть, что отправляется в базу данных
  • Откройте модель EF в редакторе, чтобы увидеть xml, проверьте, нет ли ошибок
0 голосов
/ 06 июня 2013

Убедитесь, что свойство «Копировать в выходной каталог» файла базы данных не установлено в «Копировать всегда». Если это так, то каждый раз, когда вы перестраиваете приложение, база данных может быть засорена нетронутой копией.

См .: Entity Framework не сбрасывает данные в базу данных

0 голосов
/ 20 мая 2010

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

Вы можете проверить это с помощью SQL Server Management Studio, чтобы добавить несколько записей в тестовую базу данных, а затем сделать что-то вроде

foreach (Customer c in db.Customers)
{
    Console.WriteLine(c.Name);
}
0 голосов
/ 15 мая 2010

Поместите db в оператор using, чтобы убедиться, что соединение / транзакция полностью закрыты перед завершением процесса.

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