Код EF 6.0 сначала исключение свойства навигации один к одному

Я выпускаю очень странный сценарий, используя сначала код с существующей базой данных и структурой сущности asp.net У меня есть простая модель userprofile

    [Table("CSUserProfile")]
    public partial class UserProfile
    {
        [Key]
        public string Id { get; set; }

        [Required]
        [Display(Name = "FirstName")]
        public string FirstName { get; set; }

        [Required]
        [Display(Name = "LastName")]
        public string LastName { get; set; }

        [Required]
        [Display(Name = "Phone")]
        public string Phone { get; set; }

        [Required]
        public string Email { get; set; }

        [Required]
        [Display(Name = "Location")]
        public string Location { get; set; }

        [Required]
        [Display(Name = "HomeTown")]
        public string Hometown { get; set; }

        public byte[] BlobData { get; set; }

        [ForeignKey("fPersonLinkGID")]
        public virtual List<ProfilePic> ProfilePic { get; set; }
    }     

и изображение профиля изображения

 [Table("CSProfilePic")]
public partial class ProfilePic
{
    [Key]
    public Guid? GID { get; set; }
    public string fPersonLinkGID { get; set; }
    public byte[] BlobData { get; set; }
}

внешний ключ - это fPersonLinkGID. все работает нормально, но моя проблема в том, что если я хочу взаимно-однозначного отношения между профилем пользователя и изображением, как это

общедоступный виртуальный ProfilePic ProfilePic { get; задавать; }

(это правильный сценарий) Я получаю это странное исключение:

Недопустимый атрибут ForeignKeyAttribute для свойства 'ProfilePic' для типа 'eUni.Model.Application.UserProfile'. Имя внешнего ключа fPersonLinkGID не найдено в зависимом типе eUni.Model.Application.UserProfile. Значение Name должно быть разделенным запятыми списком имен свойств внешнего ключа.

Я не могу понять, почему я получаю это исключение

1 ответ

Решение

Вы могли бы прочитать этот ответ. В нем рассказывается, как настроить отношения один к одному HasRequired а также WithOptional,

Что касается меня, я создам отношения один на один следующим образом.

public class Store {
    [Key]
    public long Id { get; set; }

    public virtual Item TheItem { get; set; }

    // .... 
}

public class Item {
    // It is FK, and also PK.
    [Key, ForeignKey("TheStore")]
    public long Id { get; set; }

    // The same string in the ForeignKey attribute. Ex: ForeignKey("TheStore")
    public virtual Store TheStore { get; set; }

    // ....
}
Другие вопросы по тегам