2016-03-31 4 views
0

Я генерироваться мои таблицы из моей диаграммы:Соотношение сторон от организации к одному?

Database schema Но я не знаю, почему, EF будет генерировать это в модели происхождения:

public virtual ICollection<Container> Containers { get; set; } 

В модели Контейнер:

public int OriginID { get; set; } 
public virtual Origin Origin { get; set; } 

и в контексте:

modelBuilder.Entity<Origin>() 
      .HasMany(e => e.Containers) 
      .WithRequired(e => e.Origin) 
      .WillCascadeOnDelete(false); 

Но контейнерный объект МОЖЕТ ТОЛЬКО иметь один объект Origin.

Как удалить коллекцию, чтобы иметь только один экземпляр моего объекта в объекте происхождения?

Потому что на самом деле мой сервис Restier извлекает из меня исходные объекты с коллекцией только одного контейнера.

Таким образом, сбор абсолютно бесполезен.

У вас есть идеи?

Большое спасибо

+0

Не должно быть взаимосвязи между обеими первичными ключами? – schlonzo

ответ

0

Поскольку происхождение вполне может быть связано с большим количеством контейнеров - они не знают об этом. У вас есть одно (происхождение) для многих (контейнер). Скажите, что у меня есть исходный код с идентификатором 1 и контейнером A с идентификатором originID 1. Что помешало бы мне добавить контейнер B с тем же идентификационным идентификатором? Если вы настаиваете на соотношении 1 к 1, попробуйте добавить ключи к обеим моделям - источник должен знать, что он связан только с одним контейнером и наоборот.

TD; DR: Добавить ContainerID в таблицу Origin.

+0

Ну, моя таблица происхождения может иметь нулевой «контейнер» или «нулевой» поток. Но только один. Вот почему мне нужно 1-1, чтобы легко получить мои данные. Фактически я получаю: { «ID»: 1, «Потоки»: [ ], «Контейнеры»: [ { «ID»: 1, «Имя»: «M3», «Ширина»: 0.0 , «Длина»: 0,0, «Высота»: 0,0, «Объем»: 0,0, «Идентификатор происхождения»: 1, «Идентификатор назначения»: 13, «Отображаемое имя»: «Меркурас» } ] } –

0

Я думаю, что лучший способ добавить отношение «один к одному» - это первичный ключ, который также является внешним ключом.

(Идентификатор происхождения должен ссылаться на идентификатор контейнера)

Смежные вопросы