Предложение по сопоставлению возможного общего внешнего ключа (объекта значения в сущности) в Entity Framework 4.1?

StackOverflow https://stackoverflow.com/questions/6073345

Вопрос

У меня есть сущность Project и сущность Rfi.Сущность проекта содержит список участников команды.Project — это свойство навигации в сущности Rfi.В сущности Rfi есть RecipientId.Этот идентификатор представляет человека из коллекции TeamMembers.Итак, представьте, что на веб-странице у нас есть раскрывающийся список с именем «Получатель».В список включены все участники команды Проекта.Пользователь выберет контакт из этого списка.Идентификатор этого контакта будет сохранен в свойстве RecipientsId.Когда страница будет перезагружена, мы выберем идентификатор этого пользователя в раскрывающемся списке на основе значения свойства RecipeintsId.Как лучше всего отобразить это в EF 4.1 с помощью свободного API?

    public class Project : BaseEntity
    {
        public string ProjectNumber { get; set; }
        public string Description { get; set; }

        public string CreatedBy { get; set; }
        public string ModifiedBy { get; set; }
        public string Currency { get; set; }


        #region Navigation Properties
        public Guid AddressId { get; set; }
        public virtual Address Address { get; set; }
        public Guid CompanyCodeId { get; set; }
        public virtual CompanyCode CompanyCode { get; set; }
        public virtual ICollection<Contact> TeamMembers { get; set; }
        #endregion

    }


    public class Rfi : Document
    {
        public string Number { get; set; }
        public string Subject { get; set; }
        public string SubcontractorRfiReference { get; set; }
        public string SpecificationSection { get; set; }

        public RfiStatus RfiStatus { get; set; }

        public Guid RecipientId { get; set; }


        #region Navigation Properties
        public Guid ProjectId { get; set; }
        public Project Project { get; set; }
        #endregion
    }
Это было полезно?

Решение

Насколько я понимаю, ваша проблема заключается в сопоставлении между Rfi и Contect - Project не имеет никакой роли в ваших функциях получателя с точки зрения базы данных.

Вам нужно либо Recipient свойство навигации в Rfi или Rfis свойство навигации в Contact.Сначала код EF требуется свойство навигации хотя бы на одной стороне отношения.

Итак, вы можете использовать что-то вроде:

public class Rfi : Document
{
    public string Number { get; set; }
    public string Subject { get; set; }
    public string SubcontractorRfiReference { get; set; }
    public string SpecificationSection { get; set; }

    public RfiStatus RfiStatus { get; set; }

    #region Navigation Properties
    public Guid RecipientId { get; set; }
    public Contact Recipient { get; set; }
    public Guid ProjectId { get; set; }
    public Project Project { get; set; }
    #endregion
}

И карта:

modelBuilder.Entity<Rfi>()
            .HasRequired(r => r.Recipient)
            .WithMany()
            .HasForeignKey(r => r.RecipientId);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top