如何在EF Core 2.1中定义外键关系 [英] How to define foreign key relationship in EF Core 2.1

查看:700
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆