EF 4.2 Code First - изображение, местоположение, объекты продукта Список не может использоваться - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть объекты продукта и местоположения, которые могут иметь / не иметь коллекцию изображений.Я знаю, что не могу создать список в соответствующих объектах, но я также не хочу создавать ассоциацию в объекте Image для двух других.

Я просто хочу, чтобы у объекта Image были Id и путь к файлу.

Есть ли способ, которым я могу это сделать?

Если ответ таков: я ДОЛЖЕН создать ассоциацию в сущности изображения для двух других, то это означает, что всякий раз, когда в будущем я создаю новую сущностькоторые могут иметь / могут не иметь фотографии, мне нужно изменить сущность Image для ассоциации, и мне не нравится эта идея.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Звучит так, будто вы хотите однонаправленных отношений.Это правильно?Таким образом, вы хотите получить доступ к Collection<Image> из «Продукта и местоположения», но не можете получить доступ к «Продукту или местоположению» из изображения?

Вы можете сделать это.В EF класс Image не будет иметь навигационного свойства Product или Location - у него будут только Id и FilePath.

Однако в базе данных таблица изображений будет иметь столбцы для ProductId и LocationId.Это сделано для того, чтобы EF мог управлять связью внешнего ключа и заполнять свойства коллекции в Product и Location.

code:

modelBuilder.Entity<Product>.HasMany(p => p.Images).WithOptional()
    .Map(d => d.MapKey("ProductId"));
modelBuilder.Entity<Location>.HasMany(p => p.Images).WithOptional()
    .Map(d => d.MapKey("LocationId"));

Управляя ими в своем приложении, вы можете просто добавлять изображенияк свойству «Коллекция изображений» в ваших основных объектах («Продукт» и «Местоположение») без необходимости устанавливать свойство навигации от зависимого изображения обратно к основному объекту (это невозможно, поскольку свойства внешнего ключа отсутствуют).

0 голосов
/ 15 декабря 2011

Вы можете создать две новые таблицы, ProductImages и LocationImages, ссылку на коллекцию из вашего продукта и местоположения, когда вы вставляете элемент для любого из них, вставляете запись, которая объединяет изображение и продукт.

Таким образом, когда вы загружаете свой продукт или ваше местоположение, вы можете проверить наличие ассоциативных изображений, проверив коллекцию.

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