首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架一对一关系?

实体框架一对一关系?
EN

Stack Overflow用户
提问于 2016-03-31 18:46:31
回答 2查看 38关注 0票数 0

我已经从我的图表中生成了我的表:

Database schema但是我不知道为什么,EF会在起源模型中生成这个:

代码语言:javascript
复制
public virtual ICollection<Container> Containers { get; set; }

在Container模型中:

代码语言:javascript
复制
public int OriginID { get; set; }
public virtual Origin Origin { get; set; }

在上下文中:

代码语言:javascript
复制
modelBuilder.Entity<Origin>()
            .HasMany(e => e.Containers)
            .WithRequired(e => e.Origin)
            .WillCascadeOnDelete(false);

但Container对象只能有一个Origin对象。

在原始对象中只有一个对象实例的情况下,如何删除集合?

因为实际上我的Restier服务正在检索只有一个容器的集合的origins对象。

所以这些收藏是完全无用的。

你们有什么想法吗?

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2016-03-31 18:52:07

因为起源可能与许多容器有关-他们不知道这一点。你所拥有的是一对多(容器)。假设我的源ID为1,容器A的originID为1,什么会阻止我添加具有相同originID的容器B?如果你坚持一对一的关系,试着给两个模型都添加关键字-- origin应该知道它只与一个容器相关,反之亦然。

TD;DR:将ContainerID添加到源表。

票数 0
EN

Stack Overflow用户

发布于 2016-03-31 22:45:24

我认为添加一对一关系的最好方法是拥有一个同时也是外键的主键。

(源Id应引用容器id)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36331172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档