2011-03-17 8 views
0

약간의 문제가 있습니다. 내 데이터베이스 (EF)에 새 항목을 추가 할 때 UpdateEception : DefiningQuery가 있고 현재 작업을 지원하는 요소가 요소에 없으므로 EntitySet 'UserRoles'를 업데이트 할 수 없습니다.POCO, 많은 관계에서 많은 엔터티 삽입 오류

나는 아주 작은 테이블을 가지고 있습니다.

Users : 

- [PK] UserID 
- Login 
- Password 
- Email 
- IsActive 

Roles : 
- [PK] RoleID 
- Name 

UserRoles : 
- [FK] UserID 
- [FK] RoleID 

가져 오기 방법

User u = db.Users.Single(x => x.Login == "scott"); 

잘 작동하지만 삽입 :/I는 방법의 제비를보십시오. UserRoles에 PK를 추가하려고합니다. 작동하지만, 그렇게되지는 않습니다. 관계는 많은 것 -> 하나 -> 많은 것, 많지 않은 것 그리고 나는 하나의 추가적인 클래스를 가져야한다. 이 문제를 해결하는 방법을 모르겠습니다.

내 엔터티 클래스가 너무 간단합니다. 역할 클래스의 목록과 사용자 클래스의 목록은 가상입니다.

public class TestDBEntity : ObjectContext 
{ 
    public ObjectSet<Role> Roles { get; set; } 
    public ObjectSet<User> Users { get; set; } 

    public TestDBEntity() 
     : base("name=TestDBEntities", "TestDBEntities") 
    { 
     ContextOptions.LazyLoadingEnabled = true; 

     this.Roles = CreateObjectSet<Role>(); 
     this.Users = CreateObjectSet<User>(); 
    } 
} 
+0

코드를 게시 할 수 있습니까? 그리고 어쩌면 EDM도 문제를 보는데 도움이 될 수 있습니다. – Yakimych

답변

0

UserRoles 테이블에 복합 키 (UserID, RoleID)를 만들어야합니다. 정의 된 기본 키가 없으면 테이블이 읽기 전용보기로 매핑되기 때문에 다른 방법은 없습니다. 여전히 many-to-many 관계로 모델링 할 것이지만, 당신은 먼저 모델로부터 당신의 엔티티를 제거하고 데이터베이스로부터의 업데이트에 의해 그들을 다시 추가해야 할 것입니다.

관련 문제