2009-07-24 2 views
7

POC 프로젝트에서 Entity Framework를 사용하고 있습니다. 내 데이터베이스에서 나는엔티티 프레임 워크 다 대다수 CRUD

Category<-------CategoryProduct ------->Product

은 (어디 테이블을 조인 모델의 엔티티입니다.)이

내가/삽입/업데이트를 선택 할 수있는 방법 또는 삭제 이것에?

답변

13

은 단순히 ... EF의는 기본적으로 CategoryProduct 엔티티를 생성하지 않습니다, 대신 사용 관계를 삭제/만들어야합니다 해당 테이블을 조작하는 두 FKS Product에 하나 Category 한 구성되어 있습니다 Product.Categories 또는 Category.Products 컬렉션

e.e.

var pc = from c in ctx.Categories 
     from p in c.Products 
     select new {CategoryID = c.ID, ProductID = p.ID}; 

을 그리고 업데이트하지 않습니다

product.Categories.Remove(category); // or visa versa 

그 테이블의 행을 얻기 위해, 즉 테이블을 조회하려면 다음 행을 제거하려면

product.Categories.Add(category); // or category.Products.Add(product); 

: 행을 추가합니다 왜냐하면 PK는 변경 될 수 없기 때문에 모든 열입니다. 즉 행의 열이 업데이트 될 수 없기 때문에 행 자체를 업데이트 할 수 없습니다 (물론 삭제 제외).

희망이

알렉스 제임스

+0

감사합니다. Alex. 그러나 제품의 컬럼을 어떻게 끝낼 수 있습니까? 이 오류가 발생합니다 : IEntityChangeTracker의 여러 인스턴스에서 엔티티 개체를 참조 할 수 없습니다. 코드는 다음과 같습니다 공공 정적 INT 업데이트 (제품 C)를 사용하여 { (SimvideoEntities CTX = 새로운 SimvideoEntities()) { ctx.Attach (C); Common.SetModified (ctx, c); return ctx.SaveChanges (true); } } – Shuaib

+0

알았어, 업데이트 및 삭제 작업이 있지만 먼저 컨텍스트에서 레코드를 가져온 다음 저장/삭제해야합니다. – Shuaib

+1

많은 도움을 주신 Alex에게 감사드립니다.좋은 일을 계속 지켜라. – Shuaib

1

은 내가 생각할 수있는 두 가지 방법, 적어도 두 가지가 있습니다

  1. 각 개체에 대한 엔티티를 가지고,이 불쾌한이며 배선이 올바른지 구하기 힘든 평소와 같이이다.
  2. 모델을 편집하여 다 대다 관계를 many-to-many로 모델링하면 모든 것을 다 처리합니다.

옵션 2가 더 좋지만 현재 CategoryProduct와 연결된 다른 데이터가있는 경우 옵션 2가 작동하지 않는다는 제한이 있습니다. CategoryProduct 테이블을 가정

+0

감사를하는 데 도움이됩니다. 그것이 내가 한 일입니다. 중산층을 없앴습니다. 모델에서 Many To Many이고 CategoryProduct는 없어졌습니다. – Shuaib