1

我有这样的数据库表:

表:用户用户
ID
用户名

表:UserToOrganization 用户 ID
组织
ID

表:组织
OrganizationId
组织

我正在使用实体框架,因为该UserToOrganization表只是由外键组成,实体框架隐藏了这个表。我想通过将 an和 an添加到表中来将 aUser与 an关联。但是,由于该表是隐藏的,如何使用 Linq 向数据库中的该表添加一行?OrganizationUser.UserIdOrganization.OrganizationIdUserToOrganizationUserToOrganization

谢谢,

亚伦

4

3 回答 3

1

一个简单的解决方案是向关系表添加一个主键。这将使其可见并允许您正常添加实体。

TABLE: UserToOrganization
UserToOrganizationId primary key int identity(1,1), <--- Add this
UserId
OrganizationId 

不要忘记通过右键单击设计器视图来更新您的 .edmx 模型 ->Update Model from Database.

于 2012-07-10T22:50:33.137 回答
0

您还可以考虑编写一个存储过程并通过您的ObjectContext. 您应该能够将过程的输入映射到ComplexType代表UserToOrganization. 然后,您可以执行以下操作:

using (var context = new MyObjectContext())
{
    context.AddUserToOrganization(...);
}
于 2012-07-10T23:04:17.327 回答
0

好的,想通了。现在我想起来似乎很明显。

这是我在 edmx 文件中列出的 EF 表(我可能应该在我原来的问题中提供这个)。请注意,User有一个OrganizationsOrganization有一个Users

表:用户
UserId
用户名
导航属性
组织

表:组织
OrganizationId
组织
导航属性
用户

以下是对隐藏的“UserToOrganization”FK 表进行插入的方法:

第 1 步:确保您的外键表的列都是主键。
第 2 步:插入。

public void AddUserToOrganization(Guid UserId, int OrganizationId)
{
    // Get the user and the organization that you want to join
    var user = _data.Users.First(x => x.UserId == UserId);
    var org = _data.Organizations.First(x => x.OrganizationID == OrganizationId);
    // Add the organization to the user
    user.Organizations.Add(org);
    // Save
    context.SaveChanges();
}

感谢您的帮助,

亚伦

于 2012-07-11T16:45:02.673 回答