Платформа объекта не сохранит данные в SQL Express (MDF)

Вы можете справиться с этим с некоторой чертой. Определите

// Primary template
template <class T>
struct Table_Trait;

// Specialization
template <>
struct Table_Trait<int> { using type = Table_Inside_int; };

template <>
struct Table_Trait<char> { using type = Table_Inside_char; };

template <class T>
using Table_Inside_t = typename Table_Trait<T>::type;

и используйте его через

template<class T>
class Table {
    Table_Inside_t *tmp;
};

Однако, может быть более простое решение, если нет необходимости иметь независимые классы Table_Inside_int и Table_Inside_double. Вы можете использовать специализацию также непосредственно

// Primary template
template <class T>
class Table_Inside;

// Specialization
template <>
class Table_Inside<int> { /* implementation for int */ };

template <>
class Table_Inside<char> { /* implementation for char */ };
11
задан Alaor 16 August 2017 в 14:00
поделиться

3 ответа

Я только что обнаружил, что пошло не так, и я думаю, что на самом деле все в порядке. Я принудительно выдал ошибку, и тогда я мог видеть, что база данных, к которой я обращался, находилась в каталоге bin, Visual Studio копировала мою базу данных в каталог bin каждый раз, когда я запускаю приложение, поэтому, если я добавляю некоторые данные вручную, я мог видеть это, но сохранения во время выполнения не сохраняются. Просто измените его на Копировать, если новее или Не копировать .

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

15
ответ дан 3 December 2019 в 05:59
поделиться

A few things leap to mind:

  • double/treble-check your connection string; are you really talking to the file that you think you are?
  • are you using transactions anywhere and not committing them?
  • do you have the mdf file set to "Copy Always" (or whatever it is).... i.e. are you constantly overwriting the mdf whenever you hit build/play?

Also - I don't think it'll matter in this case, but to verify data you should use a different entities/data-context:

using (DatabaseEntities e = new DatabaseEntities()) {
    for (int i = 0; i < 50; i++) {
        User u = new User();
        u.Nome = "User" + i.ToString();
        e.AddToUser(u);
    }
    int c = e.SaveChanges(true);
}
using (DatabaseEntities e = new DatabaseEntities()) {
    List<User> us = e.User.Where<User>(x => x.ID < 50).ToList<User>();
    foreach (User u in us)
        Console.WriteLine("ID: " + u.ID + " Hello from " + u.Nome);
}
Console.ReadKey();

Like I said - I doubt it'll matter here, but worth checking...

4
ответ дан 3 December 2019 в 05:59
поделиться

Какой тип идентификатора? GUID? Как установить ID? С NewID () по умолчанию? В этом случае преобразователь O / R не сможет прочитать идентификатор и, скорее всего, пометит объект как ошибочно сохраненный. Также проверьте с помощью SQL Profiler, если какие-либо запросы выполняются в базе данных.

0
ответ дан 3 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: