如何在EF Core 2.1中定义外键关系 [英] How to define foreign key relationship in EF Core 2.1
本文介绍了如何在EF Core 2.1中定义外键关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的DAL使用的是EF Core 2.1。这就是我的模型的样子
一个用户只能拥有一个角色:
//角色实体-主角色的类型
public class Role
{
public int RoleId {get;组; }
公用字符串RoleName {get;组; }
}
//用户实体-每个用户将有一个角色
公共类User
{
public int UserId {get;组; }
公用字符串电子邮件{get;组; }
公用字符串密码{get;组; }
public int RoleId {get;组; }
public bool IsActive {get;组; }
public DateTime CreatedOn {get;组; }
公共虚拟角色Role {组; }
}
这就是我想/试图定义两者之间的关系的方式实体:
public void Configure(EntityTypeBuilder< User>生成器)
{
builder.HasKey(x => x.UserId);
builder.Property(x => x.RoleId).IsRequired(true);
builder.Property(x => x.CreatedOn).IsRequired(true).HasDefaultValue(DateTime.Now);
// FK-抛出编译时错误
builder.HasOne(x => x.Role).WithOne(y => y.RoleId);
}
如何使用EF Fluent API定义此一个用户一个角色关系? / p>
谢谢。
附件:-
解决方案
不仅在FK关系配置中,对于 CreatedOn
列。因此,请按以下方式编写您的实体配置:
public void Configure(EntityTypeBuilder< User> builder)
{
builder.HasKey(u => u.UserId);
builder.Property(u => u.CreatedOn).IsRequired(true).HasDefaultValueSql( getdate());
// FK-配置
builder.HasOne(u => u.Role).WithMany()。HasForeignKey(u => u.RoleId).IsRequired(true);
}
I am using EF Core 2.1 for my DAL. This is how my model looks like
One user can have only one role:
// 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; }
}
This is how I was thinking/tried to define the relationship between these two entities:
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);
}
How do I define this one user one role relation using EF Fluent API?
Thanks.
Attachment:-
解决方案
Not only in the FK relationship configuration, you also have problem in the default value generation configuration for the CreatedOn
column. So write your Entity Configuration as follows:
public void Configure(EntityTypeBuilder<User> builder)
{
builder.HasKey(u => u.UserId);
builder.Property(u => u.CreatedOn).IsRequired(true).HasDefaultValueSql("getdate()");
// FK - configuraiton
builder.HasOne(u => u.Role).WithMany().HasForeignKey(u => u.RoleId).IsRequired(true);
}
这篇关于如何在EF Core 2.1中定义外键关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文