我有一个场景,我最需要两个实体之间的1对1关系。我可以用EF做到这一点,但最终的结果是我无法插入任何数据的模型,因为Entity Framework不知道首先插入哪一个。即使我将关系更改为0..1到0..1也会发生相同的情况。
我们举一个例子。我有一个实体文件和一个实体 FileData 。文件应始终具有FileData,FileData应始终具有File引用。我不希望这些在同一个实体(表格)中,因为FileData可以变得非常大,我大多只需要来自实体File的东西。
我想在两者之间指定一个级联删除,这样如果删除一个文件,相关的FileData也会被删除。
我也希望能够在一个事务中插入它们,所以我可以写
new File { FileData = ...
那么您更喜欢使用Entity Framework作为解决方案?目前我只在文件中添加了一个关系。这样我可以通过一次保存向DB提交两个实体,但是我没有在级联上删除,因为主要记录是FileData,并且它级联对我的用例“错误的方式”。
答案 0 :(得分:4)
要配置1-1关系,您必须以这种方式配置
// Configure FirstClassID as PK for SecondClass
modelBuilder.Entity<SecondClass>()
.HasKey(m => m.FirstClassId);
// Configure FirstClassId as FK for SecondClass
modelBuilder.Entity<FirstClass>()
.HasRequired(m => m.SecondClass)
.WithRequiredPrincipal(m => m.FirstClass);
这将导致FirstClassId
是两个类中的primaryKey和第二个类中的外键,即SecondClass
是一个弱实体
您可能会阅读有关一对一关系的更多信息here
希望这会对你有所帮助