繁体   English   中英

同一个表中的Entity Framework中的一对多关系

[英]one to many relationship in Entity Framework on the same table

我有两个表,其中一个用户可以有几个联系人:

User(UserId, UserName)
Contact(UserId, ContactId)

假设我想通过Userid从User Table中的UserNames获取所有ContactNames。

请注意,在当前数据上下文中无法看到Contact表,它已经变成了多对多的关系

我该如何查询?

如果我需要插入或删除该怎么办?

我尝试了“包含”方法,但它不起作用。 你有什么建议吗?

非常感谢你。

var id = 1; // id to find
context.Users
     .Where(x=>x.UserId = id)
     .SelectMany(x=>x.Users)
     .Select(x=>x.UserName)
     .ToArray();

替代文字

从db生成后,您的模型具有2个子集合:Users和Users1。

  1. 其中之一对应于用户,即当前用户的联系人。
  2. 另一个存储用户,当前用户是联系人。

您可以通过编辑器重命名它们,以将其含义表示为Contacts和ContactsFor。

替代文字

如果您仍然希望有2种类型而不是Type +(多对多参考),那么在编辑器中您可以删除引用,创建新实体联系人,设置所有映射,添加引用。 完成所有这些后 - 您将看到如下模型: 替代文字

为达到这个:

  1. 删除多对多参考
  2. 克里特岛新的实体Contact
  3. 添加属性ContactId和UserId,将StoreGeneratedPattern设置为none
  4. 添加Contact映射
  5. 添加Contacts和ContactFor的关联

但这并不容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM