【发布时间】:2021-07-14 08:27:00
【问题描述】:
我有一个 User 表和一个 UserProfileImage 表链接在一起。
这是用户表结构
public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MobileNumber { get; set; }
public override bool LockoutEnabled { get; set; } = true;
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DateOfBirth { get; set; }
public DateTime CreatedOn { get; set; } = DateTime.Now;
public DateTime UpdatedOn { get; set; } = DateTime.Now;
public UserProfileImage UserProfileImage { get; } = new UserProfileImage();
}
这是 UserProfileImage 结构
public class UserProfileImage
{
[Key]
public string Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
public string Link { get; set; }
public string Location { get; set; }
public DateTime CreatedOn { get; set; } = DateTime.Now;
}
我已将它们链接到 dbcontext 中,如下所示:
modelBuilder.Entity<User>()
.HasOne(a => a.UserProfileImage)
.WithOne(b => b.User)
.HasForeignKey<UserProfileImage>(b => b.UserId)
.OnDelete(DeleteBehavior.Cascade);
但是,当我尝试添加新用户时,我得到了这个异常:
无法跟踪“UserProfileImage”类型的实体,因为主要 关键属性“Id”为空。
我可以知道这是什么意思吗?我目前没有向 UserProfileImage 添加新条目。
【问题讨论】:
-
I am not adding a new entry to UserProfileImage- 是的,因为您指定了UserProfileImage { get; } = new UserProfileImage();。 -
哦!我没有意识到这一点。我一直以错误的方式设置关系。感谢您的帮助。你能把它作为你的答案,所以我可以把它标记为正确
标签: c# asp.net-core .net-core