c# - 数据库如何表示一对一关系?

标签 c# database entity-framework .net-core entity-framework-core

我在 Entity Framework 核心 2.0 中使用简单的一对一关系。

   modelBuilder.Entity<Profile>()
        .HasOne(p => p.Avatar)
        .WithOne()
        .HasForeignKey<Profile>(p => p.AvatarId);

每个个人资料只有一个头像。

查看数据库管理应用程序并没有向我显示(或者至少我没有发现)一对一和一对多关系之间的任何差异。所以我的意思是我找不到一对一与一对多不同的任何特殊约束。

数据库如何知道我定义了哪种关系?如果它不知道,为什么我要定义我正在使用的关系类型?

最佳答案

如果您在数据库中看不到任何外键或主键,那么它就不知道。或者更具体地说:您将被允许保存违反关系的数据。

关系的完整性是通过外键在数据库中强制执行的,但这肯定不会阻止您提交错误地连接表的 SQL。

这里是定义外键的链接,可确保基于表中的数据保证一对一关系。 http://www.tech-recipes.com/rx/56738/one-to-one-one-to-many-table-relationships-in-sql-server/

关于c# - 数据库如何表示一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825775/

相关文章:

iphone - 无法将 sqlite 数据库从应用程序的主包复制到用户文档

c# - 如何在 Entity Framework 中完全锁定一行

entity-framework - Entity Framework 代码优先与链接表的一对多关系映射

c# - 使用 JQuery Timeago 显示日期时间

c# - 在控制台应用程序中使用 WindowsFormsSynchronizationContext 时异步/等待死锁

java - 数据库android从表中选择

mysql - 不确定如何设计有条件的一对多关系

sql-server - Async/Await 片段在以 MS-SQL-Server 为目标时发生死锁(如预期),但在以 Oracle 为目标时不会死锁(意外)

c# - 将 byte[] 从 Android 应用程序传递到 C# 控制台应用程序?

c# - 嵌套并行 For 中的死锁风险