Entity Framework CTP 5 сопоставление один-к-одному - PullRequest
5 голосов
/ 02 марта 2011

У меня есть две таблицы:

Требование

RequirementId - PK

Fixture

FixtureId - PK

RequirementId - FK /NULLABLE / Unique Constraint

Приспособление может иметь только 1 Требование, ни один Приспособление не может ссылаться на то же Требование.Для Приспособления не обязательно иметь Требование, его необязательно.

Что я сделал, так это то, что в Sql Server я наложил ограничение Unique на столбец RequirementId в таблице Fixture.Как мне настроить сопоставление для этого в Entity Framework CTP 5?

Также возможно ли иметь свойство двунаправленной навигации для каждого объекта?

public class Fixture
{
    public int FixtureId { get; set; }
    public Requirement Requirement { get; set; }
}

public class Requirement
{
    public int RequirementId { get; set; }
    public Fixture Fixture { get; set; }
}

Возможно, я все неправильно понимаютак что любой совет будет отличным.Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 02 марта 2011

То, что вы ищете, называется Связи "один-к-одному" с внешним ключом и, как упоминал Ладислав, изначально не поддерживается EF.Тем не менее, я показал, как реализовать это с Code First в этой статье .

0 голосов
/ 02 марта 2011

К сожалению, текущая версия EF не может работать с уникальными ограничениями. Единственный способ добиться отображения 1: 0..1 в EF - это «совместное использование PK». Это означает, что если основной сущностью является Fixture, он будет иметь FixtureId в качестве PK, а Requirement будет иметь FixtureId в качестве PK и FK для Fixture.

...