2009-09-23 2 views
0

MVC/Entity Framework 프로젝트를 빈에 버리고 MVC/Linq 프로젝트를 시작할 때 도와 주시면 좋겠습니다.ado.net 엔티티 프레임 워크 대대적 인 혼란

MVC/Entity를 알기 위해 프로젝트를 진행 중이며 관련 테이블 4 개가 있습니다.

  • Forum_Category,
  • 포럼,
  • 주제,
  • 답글

그렇게 Forum_Category 및 포럼 사이 CATEGORY_ID에 많은에 일이있다.

포럼 및 주제 사이의 Forum_ID에 1 대 다수.

및 Topic과 Reply 사이의 Topic_ID에 1 대 다수.

난 당신이

Dim F = (From forum in _DataContext.Forum.Include("Forum_Category") _ 
     Where forum.Forum_ID = 1 _ 
     Select forum).First 

하지만 그때, 하나의 주제에 모든 replys에 대한 데이터를 얻을 주제의 포럼을로드하기를 원한다면 무엇 범주를 사용하여 관련 데이터를로드 할 수 이해?

Dim FT = (From F In _dataContext.Topic.Include("Forum") _ 
       Where F.TOPIC_STATUS = ForumSettings.FORUM_STATUS.Active _ 
       Select F).First() 
    Dim TRs = (From F In _dataContext.Topic_Reply _ 
       Where F.Topic.TOPIC_ID = TopicID _ 
       Select F).ToList() 
    For Each TR As Topic_Reply In TRs 
     FT.Topic_Reply.Add(TR) 
    Next 
    Return FT 

을하지만 새로운 회신을 추가하려고 할 때 다음, 나는 오류가 발생했습니다 :

내가 코드를 약간 거기까지 관리 같은 키를 가진 개체가 이미 ObjectStateManager에 존재 을. ObjectStateManager는 동일한 키가있는 여러 객체를 추적 할 수 없습니다.

나는 이제 완전히 없어졌습니다.

답변

2
Dim FT = (From T In _dataContext.Topic.Include("Replies").Include("Forum") _ 
      Where T.TOPIC_ID = TopicID _ 
      Select T).First() 

... "Replys"가 아닌 "Replies"라고 가정합니다. :)

이제 FT.Replies에서 FT.Forum을보고 포럼을 볼 수 있습니다.

사용하지 마십시오. 그것은 당신의 DB에 INSERT를 수행하는 것이며, 물론 그 레코드는 이미 있습니다. 그것은 오류의 의미입니다.

여기에서 핵심적인 통찰력은 모든 관계가 양방향이라는 것입니다. 관계의 양쪽에서 관련 객체를 볼 수 있습니다.