我正在使用 Entity Framework 5 数据库优先方法。
我有一个包含这 3 个表的现有数据库:Person、Group、PersonGroup。这是为了表达一对多的关系。一个人可以属于多个组。PersonGroup 表具有 ID PersonId 和 GroupId。
表结构:
人员:PersonId、PersonName
组:GroupId、GroupName
PersonGroup:PersonId、GroupId
EF5 已将 PersonGroup 表添加为 Person 和 Group 实体的导航属性。我想根据组名从组中删除一个人。我仍然想保留这个人和这个团体。
如何在存储库中编写此方法?这就是我所拥有的不起作用
public bool RemovePersonFromGroup(Guid personId, string groupName)
{
using (gblPersonEntities gblPerson = new gblPersonEntities())
{
var pg = gblPerson.Person
.Where(p => p.PersonId == personId).FirstOrDefault()
.Group.Where(g => g.GroupName == groupName).FirstOrDefault();
//doesn't work because pg returns as a Group entity and
//remove is expecting a Person entity and I just want to remove a
//PersonGroup entity
gblPerson.Person.Remove(pg);
gblPerson.SaveChanges();
}
return true;
}
同样在这个项目中,所有实体都是分离的,不使用代理类型,并且旨在在 WCF 服务边界之间移动。