У меня проблемы с настройкой отношений сущностей, когда одна сущность наследуется от другой.Я новичок в ADO Entity Framework - возможно, у кого-то более опытного есть несколько советов о том, как это лучше всего сделать.Я использую .net 4.
Таблицы базы данных с полями:
- Продукты (int ID, описание nvarchar)
- FoodProducts (int ProductID, бит IsHuge)
- Ароматы (int ID, int FoodProductID, nvarchar Description)
Существуют ограничения между продуктами и продуктами питания, а также продуктами питания и ароматами.
Использование конструктора Iсоздать модель из базы данных.Дизайнер, кажется, понимает это правильно, имея связь 1: 0..1 между сущностями Product и FoodProduct и связь 1: * между Flavor и FoodProduct.Нет ошибок при сохранении или сборке.
Далее я настраиваю сущность FoodProduct для наследования от сущности Product.Тогда я получаю ошибки, касающиеся отношений между продуктом и продуктом питания.Хорошо, начав заново, я сначала удаляю отношения между Product и FoodProduct, прежде чем устанавливать наследование.Но теперь я получаю ошибки об отношениях между FoodProduct и Flavor.Поэтому я удаляю, а затем воссоздаю эту связь, подключая Flavor.ID к FoodProduct.ProductID.Теперь я получаю другие ошибки.
У меня такой вопрос : стоит ли вместо этого создавать отношения между Flavor.FoodProductID и Product.ID ?Если это так, то я полагаю, что мог (или должен) удалить свойство FoodProduct.ProductID.Поскольку в моей базе данных будет много таких типов отношений, лучше ли мне сначала создать модель сущностей и экспортировать таблицы в SQL, либо импортировать схему базы данных, а затем внести множество изменений?
Мое намерениеявляется то, что будет несколько типов продуктов, некоторые из которых требуют много дополнительных полей, а некоторые нет.Таким образом, может быть ноль или одна запись FoodProducts, связанная с каждой записью Product.По крайней мере, по моему мнению, таблица для каждого подтипа (FoodProducts) должна иметь возможность «заимствовать» первичный ключ из Products (как FK), чтобы однозначно идентифицировать каждую из его записей.
Вы можете найтиснимок экрана здесь: http://img218.imageshack.us/img218/9720/entityframework.jpg (я бы вставил img, но еще не заработал нужного представителя!)
Ну, я удалил поле FoodProduct.ProductID, как и всегдав любом случае вернуть то же значение, что и Product.ID.Затем, как вы намекнули, мне пришлось вручную сопоставить поле Products.ID с полем FoodProducts.ProductID.Ошибки устранены.Я напишу небольшой код для проверки функциональности.Спасибо за "наблюдения"!