首页 > 解决方案 > 一对一关系实体框架和 .NET

问题描述

我首先使用代码在我的类之间创建关系。集成发生在 MySql 上,但是,在我检查我的工作台 ERD 时,在迁移它之后将关系视为一对多。

我如何使用下面提到的课程进行一对一的关系?

这是我的代码:

public class About  
{
    [ForeignKey("User")]
    public int Userid { get; set; }
    public int id { get; set; }
    public string about_file { get; set; }
    public string about_desc { get; set; }
    public virtual User User { get; set; }
}

public class User 
{
    [Key]
    public int id { get; set; }
    public string login { get; set; }
    public string password { get; set; }
    public virtual About About { get; set; }
    public ICollection<Offers> Offers { get; set; } = new List<Offers>();
    public ICollection<Portfolio> Portifolios { get; set; } = new List<Portfolio>();
}

Microsoft.EntityFrameworkCore 版本:{5.0.7}

工作台生成的来自我的 ERD 的图像

标签: c#asp.net-mvcentity-framework-coremysql-workbenchentity-relationship-model

解决方案


按照惯例,这只是一对一的关系。从实体框架的角度来看,拥有导航属性而不是集合可确保只有一个子实体与一个父实体相关联。但是在数据库级别上,没有什么可以阻止创建多个子实体。

如果要在数据库级别强制执行它,请向子实体的外键添加 UNIQUE 约束,或者使两个实体上的主键相同,并改为使用外键。


推荐阅读