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

oLanJieKou 2013-11-19 04:44:57
RT
实际情况是这样的
我有A表 B表 和第三方关系表C表 C表保存的是A表和B表的主键 并且设置为了联合主键,现在的问题是 添加一条A表的数据 添加一条B表的数据 然后通过第三方关系表C表来进行关联
后来发现第三方关系表无法显式映射 所以就无法直接操作C表 请假各位大大 这种情况怎么弄呢
...全文
240 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,243

社区成员

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

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

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

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