Вы можете справиться с этим с некоторой чертой. Определите
// 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 */ };
Я только что обнаружил, что пошло не так, и я думаю, что на самом деле все в порядке. Я принудительно выдал ошибку, и тогда я мог видеть, что база данных, к которой я обращался, находилась в каталоге bin, Visual Studio копировала мою базу данных в каталог bin каждый раз, когда я запускаю приложение, поэтому, если я добавляю некоторые данные вручную, я мог видеть это, но сохранения во время выполнения не сохраняются.
Просто измените его на Копировать, если новее
или Не копировать
.
Имейте в виду, что Копировать, если более новая
содержит некоторые риски при доступе к базе данных .mdf
.
A few things leap to mind:
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...
Какой тип идентификатора? GUID? Как установить ID? С NewID () по умолчанию? В этом случае преобразователь O / R не сможет прочитать идентификатор и, скорее всего, пометит объект как ошибочно сохраненный. Также проверьте с помощью SQL Profiler, если какие-либо запросы выполняются в базе данных.