gpt4 book ai didi

c# - Entity Framework 一对一关系?

转载 作者:太空狗 更新时间:2023-10-30 01:15:11 26 4
gpt4 key购买 nike

我有一个场景,我最需要两个实体之间的 1 对 1 关系。我可以用 EF 做到这一点,但最终结果是一个我无法插入任何数据的模型,因为 Entity Framework 不知道先插入哪个数据。即使我将关系更改为 0..1 到 0..1,也会发生同样的情况。

让我们举个例子。我有一个实体 File 和一个实体 FileData。 File 应该总是有一个 FileData,而 FileData 应该总是有一个 File 引用。我不希望它们在同一个实体(表)中,因为 FileData 会变得非常大,而且我主要只需要实体文件中的内容。

我想在两者之间指定一个级联删除,这样如果我删除一个文件,相关的 FileData 也会被删除。

我还希望能够将它们都插入到一个事务中,这样我就可以写

new File { FileData = ...

那么您更喜欢使用 Entity Framework 的什么解决方案?目前我只添加了一个与文件的关系。通过这种方式,我可以通过一次保存将两个实体提交到数据库,但我不会在级联上删除,因为主要记录是 FileData 并且它级联对我的用例“以错误的方式”工作。

最佳答案

要配置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 是两个类中的主键和第二个类中的外键,即 SecondClass 是一个弱实体

您可能会阅读更多关于一对一关系的信息 here

希望对你有帮助

关于c# - Entity Framework 一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com