我正在使用實體框架5數據庫的第一種方法。實體框架5多對多刪除依賴對象
我有一個現有的數據庫與這3個表:Person,Group,PersonGroup。這是爲了表達一對多的關係。一個人可以屬於多個團體。 PersonGroup表具有ID PersonId和GroupId。
表結構:
人:PERSONID,PERSONNAME
組:的GroupId,組名
PersonGroup:PERSONID,的GroupId
class diagram http://i39.tinypic.com/30jiluh.png
EF5添加了PersonGroup表作爲個人和團體實體的導航屬性。我想根據組名從組中刪除一個人。我仍然想保留這個人和小組。
如何在存儲庫中編寫此方法?下面是我有一個不工作
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服務邊界之間移動。
我不明白你的說法_EF5加入了PersonGroup表作爲導航屬性_。看起來你有一個多對多的關聯(不是一對多)Persons - Groups,這意味着你可以從一個Group的Persons集合中刪除一個Person。只有聯結記錄('PersonGroup')將被刪除。順便說一句,請你自己(和我們)幫忙收集屬性名稱並將其複數化。 –
當我說「EF5已將PersonGroup表添加爲導航屬性」時,這是因爲當我從數據庫生成模型時,EF5將PersonGroup表添加爲Person實體上的導航屬性。我會編輯這個問題,使其更清晰。 – Que
另外,你能告訴我刪除PersonGroup中的結合記錄的代碼嗎? – Que