Entity Framework - отдельные первичные ключи с помощью Nav Props в отношениях один-к-одному - PullRequest
0 голосов
/ 30 декабря 2011

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

Вот отличная иллюстрация проблемы. Как видите, я не могу объединить первичные ключи. И я не хочу имитировать отношения 1 .. *, потому что отношения всегда 1-1.

public class SingleParent
{
    public Guid ParentID { get; set; }
    public virtual OnlyChild Child { get; set; }
}

public class OnlyChild
{
    public Guid ChildID { get; set; }
    public virtual SingleParent Parent { get; set; }
}

// Parent and Child cannot share a primary key because a pediatrician only treats children.
public class Pediatrician
{
    public Guid PediatricianID { get; set; }
    public virtual List<OnlyChild> Patients;
}

Как мне получить такие свойства навигации, чтобы Parent.Child <==> Child.Parent? Я бы предпочел сделать это с аннотациями данных, чтобы они соответствовали остальному коду. Любая мудрость будет с благодарностью!

1 Ответ

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

Если вы добавляете внешний ключ к обеим сущностям, он должен работать как с DataAnnotations, так и с Fluent API.

    public class SingleParent
    {
        public Guid ParentID { get; set; }
        public Guid ChilId { get; set; }

        [ForeignKey("ChildId")]
        public virtual OnlyChild Child { get; set; }
    }

    public class OnlyChild
    {
        public Guid ChildID { get; set; }
        public Guid ParentId { get; set; }

        [ForeignKey("ParentId")]
        public virtual SingleParent Parent { get; set; }
    }

Вот некоторая документация , которая объясняет, как создать взаимно-однозначное отношение.

...