c# - 一对一关系实体框架和 .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}
解决方案
按照惯例,这只是一对一的关系。从实体框架的角度来看,拥有导航属性而不是集合可确保只有一个子实体与一个父实体相关联。但是在数据库级别上,没有什么可以阻止创建多个子实体。
如果要在数据库级别强制执行它,请向子实体的外键添加 UNIQUE 约束,或者使两个实体上的主键相同,并改为使用外键。
推荐阅读
- r - 有缺失值的条件语句
- mysql - 如何使用 phpMyAdmin 为具有默认空格的 Null 值字段导入 ods 文件
- java - 如何摆脱 KVM VM 中 java 和 php 进程之间的进程间通信中的 tcp-ip 发送延迟
- java - 如何解决由 JAXB 语句引起的异常?
- java - 如何在 Java 中使用 Selenium 提交表单
- javascript - 如果用户在出站呼叫中未接听,Twilio 会发送语音消息
- android - 在 NestedScrollView 中使用 RecyclerView 进行分页
- python - 错误=193,%1 不是一个有效的 Win32 应用程序,它带有到 Python 脚本的管道
- dart - 尝试使用导航器页面访问时找不到 Flutter scoped_model
- javascript - 如何将父元素名称添加到子元素