Я следовал этой статье при создании модели наследования таблиц для типов для моих сущностей, но я получаю следующую ошибку при попытке добавить экземпляр подкласса в базу данных.
Вот как я создаю подтип:
var cust = db.Users.CreateObject<Customer>(); // Customer inherits User
db.Users.AddObject(cust);
db.SaveChanges();
При выполнении последнего вызова я получаю следующую ошибку:
"Значение, общее для сущностей или ассоциаций:сгенерировано в нескольких местах. Убедитесь, что отображение не разбивает EntityKey на несколько сгенерированных хранилищем столбцов. "
Со следующим внутренним исключением:
" Элементс тем же ключом уже был добавлен. "
Есть идеи о том, чего мне не хватает?
ОБНОВЛЕНО С ДЕЙСТВИЯМИ REPRO
Создал пустую базу данных MS SQL Server 2008 R2 и добавил две следующие таблицы:
Users
- Id: bigint (PK и установите его в качестве столбца идентификации)
- Имя: nvarchar (25) NOT NULL (что угодно, какое-то случайное свойство
Клиенты
- Id: bigint (PK, столбец идентификаторов и FK для Users.Id)
- Название: nvarchar (25) NOT NULL (также что-нибудь, некоторыеслучайное свойство)
Далее я сгенерировал модель сущности .edmx из базы данных и перешел по ссылке в верхнем дословном выражении.То есть я удалил связь между Пользователем и Клиентом, установил Пользователя в качестве базового класса Клиента, удалил свойство Id из сущности Клиента и убедился, что столбец Customer.Id был сопоставлен с унаследованным свойством User.Id.,Затем я запустил следующую небольшую программу:
using (var db = new EF_Test.testEntities())
{
var cust = db.Users.CreateObject<Customer>();
db.Users.AddObject(cust);
db.SaveChanges();
}
Я получаю те же исключения, которые я описал выше.Пожалуйста, дайте мне знать, работает ли у вас это воспроизведение, и если да, то что я делаю неправильно.Я заблокирован по этому вопросу.