Entity Framework 和 .NET 的一对一关系

Posted

技术标签:

【中文标题】Entity Framework 和 .NET 的一对一关系【英文标题】:One-to-one relashionship Entity Framework and .NET 【发布时间】:2021-09-25 09:59:00 【问题描述】:

我首先使用代码在我的类之间创建关系。集成发生在 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

【问题讨论】:

这是一个很好的 EF:Core 学习资源。 learnentityframeworkcore.com/configuration/… 了解确切的 EF 版本也很有用。 感谢您的回复,我刚刚编辑了我的帖子。版本是 Microsoft.EntityFrameworkCore 版本:5.0.7 我已经阅读了这个页面但没有任何成功,目前我正在关注 Microsoft Doc。但也没有成功...docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/… 【参考方案1】:

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

如果您想在数据库级别强制执行,请为子实体的外键添加一个 UNIQUE 约束,或者使两个实体上的主键相同,然后改为外键。

【讨论】:

对。 db-design 是一样的。 FK 的唯一约束是最大的不同。 @Irpe 感谢您的回复,我已经尝试将我的 About 类更改为以下代码,但它仍然显示一对多... public class About [Key] [ForeignKey( "用户")] public int Userid get;放;

以上是关于Entity Framework 和 .NET 的一对一关系的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET Entity Framework 和标识列

从哪里开始 .NET Entity Framework 和 ORM?

Cosmos 的 .NET 5 和 Entity Framework Core (5.0.1) 迁移问题

ADO.NET Entity Framework 和 NHibernate - 何时使用其中之一

Entity Framework 6 是不是支持 .NET 4.0?

ADO.NET Entity Framework