我正在使用EF Core 2.1作为我的数据访问层。下面是我的模型:
一个用户只能有一个角色:
// Role entity - kind of master
public class Role
{
public int RoleId { get; set; }
public string RoleName { get; set; }
}
// User entity - every user will have one role
public class User
{
public int UserId { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public int RoleId { get; set; }
public bool IsActive { get; set; }
public DateTime CreatedOn { get; set; }
public virtual Role Role { get; set; }
}
这是我尝试定义这两个实体之间关系的方式:
public void Configure(EntityTypeBuilder<User> builder)
{
builder.HasKey(x => x.UserId);
builder.Property(x => x.RoleId).IsRequired(true);
builder.Property(x => x.CreatedOn).IsRequired(true).HasDefaultValue(DateTime.Now);
// FK - throwing compile time error
builder.HasOne(x => x.Role).WithOne(y => y.RoleId);
}
我如何使用EF Fluent API定义一个用户对应一个角色的关系?
谢谢。
附件:-
![enter image description here](https://istack.dev59.com/Nmefi.webp)
builder.HasOne(x => x.Role).WithOne(y => y.RoleId);
不是必要的,因为您已经通过公开public int RoleId { get; set; }
和public virtual Role Role { get; set; }
属性来声明您的 User 实体应该只有一个角色。移除它,我相信您的应用程序将会产生这种行为。 - Oswald Umeh