나는 EF4와 함께 POCO를 사용하고 있으며 일부 엔터티는 다 대 다 관계에 있으며 내 경우에는 User 클래스 개체와 PrivilegeGroup 클래스 개체입니다.POCO를 사용하여 다 대다 관계의 엔터티를 삭제하는 방법
public class User
{
public int UserID { set; get; }
public string UserName { get; set; }
public string UserPassword { get; set; }
public bool IsActive { get; set; }
public List<PrivilegeGroup> PrivilegeGroups { get; set; }
}
그리고이 같은 클래스 PrivilegeGroup 보이는 방법은 다음과 같습니다 : 다음과 같이 내가 ObjectContext를 클래스 을 확장 한
public class PrivilegeGroup
{
public int PrivilegeGroupID { get; set; }
public string Name { get; set; }
public List<User> Users { get; set; }
public List<HasPrivilege> HasPrivileges { get; set; }
}
: 클래스 사용자가 같은 모양을
이입니다
public class AdminMDSContext : ObjectContext
{
public AdminMDSContext(string connectionString)
: base(connectionString)
{
this.DefaultContainerName = "MDSUsers_Entities";
_users = CreateObjectSet<User>();
_privilegeGroups = CreateObjectSet<PrivilegeGroup>();
}
private ObjectSet<User> _users;
private ObjectSet<PrivilegeGroup> _privilegeGroups;
public ObjectSet<User> Users
{
get { return _users; }
}
public ObjectSet<PrivilegeGroup> PrivilegeGroups
{
get { return _privilegeGroups; }
set { _privilegeGroups = value; }
}
}
이러한 항목의 쿼리 및 삽입은 정상적으로 작동하지만 삭제 DB 왕복없이 하나의 사용자로부터 PrivilegeGroup을 제거하고 싶지만 그 방법을 모르겠습니다.
아무도 도와 줄 수 있습니까?
무엇을 시도 했습니까? 그것은 나에게 'yourUser.PrivilegeGroups.Remove (yourPrivilegeGroup)'; context.SaveChanges();'작업을 수행해야하지만 틀릴 수도 있습니다. 실제로 삭제를 수행하려고 시도한 것에 대한 코드를 보여줄 수 있습니까? context.Users 미국에서 사용 –
(AdminMDSContext 컨텍스트 = 새로운 AdminMDSContext (GetConnStringHTMLDecoded())) { VAR usVar = \t us.UserID가 == userId를 \t 우릴 여기서 선택; 사용자 사용자 = usVar.SingleOrDefault(); var pgVar = 컨텍스트의 pg에서 .PrivilegeGroups 여기서 pg.PrivilegeGroupID == privilegeGroupId select pg; PrivilegeGroup privilegeGroup = pgVar.SingleOrDefault (); if (user.PrivilegeGroups == null) {user.PrivilegeGroups = new List ();} user.PrivilegeGroups.Add (privilegeGroup); user.PrivilegeGroups.Remove (privilegeGroup); context.SaveChanges(); } –
잘,이 코드는 확실히 유망 해 보이지 않습니다. 짧은 이야기를 잘라내려면 필요한 ID로 필터링 된 데이터로 개체를 만들었습니다. 사용자 클래스 개체는 List을 초기화 한 다음 추가 및 제거했습니다. PrivilegeGroup 객체. 그 후, 나는 상황에 대한 변화를 저장했다. 그리고 나는 하나의 사용자와 하나의 PrivilegeGroup을 찾기 위해 데이터베이스에 두 개의 쿼리를 가지고 있었고 나는 삭제 된 SQL 쿼리를 가지고 있지 않았다. 반대, 그냥 삭제 SQL 쿼리를 실행 싶어요. 내가 여기서 뭘 잘못하고 있는지 모르겠다. –