0
一个一对一的关系,我有两个班我如何申报代码优先ef.1
public class User
{
[Key]
public int Id { get; set; }
public Avatar Avatar { get; set; }
}
public class Avatar
{
[Key]
public int Id { get; set; }
[Required]
public string LinkInString { get; set; }
[NotMapped]
public Uri Link
{
get { return new Uri(LinkInString); }
set { LinkInString = value.AbsoluteUri; }
}
public int UserId { get; set; }
}
User
有一个Avatar
或零。
当我加2个用户
db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2A") }});
db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2B") }});
db.SaveChanges();
每Avatar
0作为UserId
,当然用户有1和2为Id.
我怎样才能解决这个问题?
你几乎正确添加实体。我可以在User类中拥有导航属性Avatar,但只有在Avatar类中没有导航属性User。所以有2个选项。实际上有第三种选择 - 用户和头像可以存在于同一个表中,我们可以在头像类中添加属性Id并添加HasRequired(a => a.Avatar).WithRequiredPrincipal();在UserConfiguration和HasKey中(a => a.Id);在AvatarConfiguration中。 – user278618