Код 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; }
// ....
}