我发布了一个非常奇怪的场景,首先使用Code与现有数据库和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。一切正常但我的问题是,如果我想在userprofile和像这样的图像之间建立一对一的关系
public virtual ProfilePic ProfilePic {get;组; }
(这是正确的场景)我得到了这个奇怪的例外:
属性&#39; ProfilePic&#39;上的ForeignKeyAttribute on type&#39; eUni.Model.Application.UserProfile&#39;无效。外键名称&#39; fPersonLinkGID&#39;未在依赖类型&e; eUni.Model.Application.UserProfile&#39;上找到。 Name值应该是以逗号分隔的外键属性名称列表。
我无法理解为什么我会得到那个例外
答案 0 :(得分:1)
您可以阅读this answer。它介绍了如何按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; }
// ....
}