EF操作第三方关系表的问题

oLanJieKou 2013-11-19 04:44:57
RT
实际情况是这样的
我有A表 B表 和第三方关系表C表 C表保存的是A表和B表的主键 并且设置为了联合主键,现在的问题是 添加一条A表的数据 添加一条B表的数据 然后通过第三方关系表C表来进行关联
后来发现第三方关系表无法显式映射 所以就无法直接操作C表 请假各位大大 这种情况怎么弄呢
...全文
234 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
oLanJieKou 2013-11-20
  • 打赏
  • 举报
回复
引用 7 楼 ltcszk 的回复:
[quote=引用 5 楼 oLanJieKou 的回复:] [quote=引用 3 楼 ltcszk 的回复:] 上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错[/quote] 你是怎么创建context的? 一个请求只创建一个context一般就不会有这种问题了[/quote] 如果我使用同一个context做添加 也就是添加多张表 包括关系表是不是会有问题了 但是我的第三方表 我不知道怎么添加额 你看上面我给你回复的表结构 两个字段都要赋值?
oLanJieKou 2013-11-20
  • 打赏
  • 举报
回复
(一个用户只能连续回复3次,好吧 我被沉默了 连个占楼的人都没有 - -)好似问题解决了 跟大家分享下 我是这样做的 使用【ltcszk】说的 同一个context去操作所有添加所涉及的表和关系 貌似就没问题了 我测试了 可以添加 并且关系都正确 上代码勒
ltcszk 2013-11-20
  • 打赏
  • 举报
回复
引用 8 楼 oLanJieKou 的回复:
[quote=引用 7 楼 ltcszk 的回复:] [quote=引用 5 楼 oLanJieKou 的回复:] [quote=引用 3 楼 ltcszk 的回复:] 上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错[/quote] 你是怎么创建context的? 一个请求只创建一个context一般就不会有这种问题了[/quote] [/quote] 最后两句随便删掉一句 关系是自动绑定的,你只要在一个实体上加上另一边就会自动产生关系
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
引用 7 楼 ltcszk 的回复:
[quote=引用 5 楼 oLanJieKou 的回复:] [quote=引用 3 楼 ltcszk 的回复:] 上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错[/quote] 你是怎么创建context的? 一个请求只创建一个context一般就不会有这种问题了[/quote] 不同的方法都有不同的context 因为之前我试过的 整个EF层使用同一个context会有数据重复的问题 估计是缓存还是怎么了 所以我每次写一个方法 都会重新声明context
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
引用 9 楼 hdhai9451 的回复:
C表你有几个字段?如果只有两个字段是无法映射表的,至少还要加一个字段,即使这个字段没有用也要加,否则这个表不会出来
是的 这个问题搞定了的 因为使用第三方关系表来操作 可以更方便 确实是不会显式映射 所以就无法操作关系实体 但是我想应该还有其他办法解决这个问题吧 当初也是想的多建一个无用字段 但是后来想想 应该还有其他办法
Andy__Huang 2013-11-19
  • 打赏
  • 举报
回复
C表你有几个字段?如果只有两个字段是无法映射表的,至少还要加一个字段,即使这个字段没有用也要加,否则这个表不会出来
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
引用 7 楼 ltcszk 的回复:
[quote=引用 5 楼 oLanJieKou 的回复:]
[quote=引用 3 楼 ltcszk 的回复:]
上次你不是问过类似的问题吗
public class A{
public virtual ICollection<B> Bs { get; set; }
}

a.Bs.Add(b);

b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据


一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错[/quote]
你是怎么创建context的?
一个请求只创建一个context一般就不会有这种问题了[/quote]

ltcszk 2013-11-19
  • 打赏
  • 举报
回复
引用 5 楼 oLanJieKou 的回复:
[quote=引用 3 楼 ltcszk 的回复:] 上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错[/quote] 你是怎么创建context的? 一个请求只创建一个context一般就不会有这种问题了
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
引用 4 楼 u012633310 的回复:
第三方关系表无法显式映射,具体是什么情况,能不能说的更详细点(比如:给个截图),我觉得这种表的设计是没有问题的.
额 就是说这个第三方关系表不存在实体类文件 它只是存在于主表的映射中 这样能理解吗。
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
引用 3 楼 ltcszk 的回复:
上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
一个实体对象不能由多个 IEntityChangeTracker 实例引用。 报这个错 我刚也查了下 是说更新关系表的话 会产生一个跟踪对象 我这里就不是同一个对象了 所以报错
傲行天下 2013-11-19
  • 打赏
  • 举报
回复
第三方关系表无法显式映射,具体是什么情况,能不能说的更详细点(比如:给个截图),我觉得这种表的设计是没有问题的.
ltcszk 2013-11-19
  • 打赏
  • 举报
回复
上次你不是问过类似的问题吗 public class A{ public virtual ICollection<B> Bs { get; set; } } a.Bs.Add(b); b会自动与a建立关系,也就是会自动在c表里插入一条数据,如果b在context里不存在就会在b表里自动新建一条数据
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
艾玛 好蛋疼 在线等
oLanJieKou 2013-11-19
  • 打赏
  • 举报
回复
我又给你们带问题来了 every body 动起来

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧