C# 在实体框架中使用代码优先样式建模?

C# 在实体框架中使用代码优先样式建模?,c#,entity-framework,ef-code-first,cardinality,C#,Entity Framework,Ef Code First,Cardinality,我对实体框架还很陌生,想创建一本(个人)快速参考手册。它的目标是给自己一些非常简短的code-first示例,这些示例具有不同的基数: 一对一 一对多 多对多 以下是我迄今为止所做的工作: 首先,我非常清楚,在这个特定的主题上有好几条线索(我读了很多,很多都有令人困惑的相反的陈述)。 其次,我只对[Data Annotation]-风格感兴趣(而不是对任何一种流畅的API!) 许多来源让我困惑,但我的问题很简单:是否真的有必要使用[System.ComponentModel.DataAnno

我对实体框架还很陌生,想创建一本(个人)快速参考手册。它的目标是给自己一些非常简短的
code-first
示例,这些示例具有不同的基数:

  • 一对一
  • 一对多
  • 多对多
以下是我迄今为止所做的工作: 首先,我非常清楚,在这个特定的主题上有好几条线索(我读了很多,很多都有令人困惑的相反的陈述)。 其次,我只对
[Data Annotation]
-风格感兴趣(而不是对任何一种流畅的API!)

许多来源让我困惑,但我的问题很简单:是否真的有必要使用
[System.ComponentModel.DataAnnotations.Schema.ForeignKey]
-属性(我的
一对多
多对多
代码示例)

编辑1:为我提供了一个模型,我根据从找到的信息中了解到的情况更新了模型(一对一):


我应该在
[ForeignKey(“”)
中使用与我的虚拟财产
公共虚拟锁{get;set;}
中相同的字符串吗?即。
=

您的1-1示例不准确-从技术上讲,N
Locker
s可以引用单个
Student
,而N
Student
s可以引用单个
Locker
,但EF将抛出一个
InvalidOperationException
,并显示消息“无法确定关联的主端”

使用共享主键强制1-1关系(将PK字段的属性同时指定为
[key]
[ForeignKey(“”)

更多关于这个话题的阅读