2011-08-07 2 views
2

여기에 문제가있어. 매우 간단한 테이블에 아주 간단하게 삽입되었습니다 ... 제가 수천 번 해봤지만 어떤 이유로 여기에서 일하지 않습니다.EF 4.1 코드를 사용하여 삽입 저장 안함

기본적으로 저장소 패턴을 통해 간단한 INSERT를 실행하고 컨텍스트 변경 내용을 저장하고 있습니다. 오류가 없으며 단계별로 진행할 수 있지만 레코드는 데이터베이스에 없습니다.

어리 석음에 대한 내 엉덩이를 다루는 데 관심이 있습니다. 올바른 데이터에 연결되어 있기 때문에 시드 데이터를 올바르게 가져올 수 있습니다 (앱에 연결 문자열이 하나뿐이기 때문에). 또한, 나는 데이터베이스가 매번 재구성되지 않는다는 것을 안다. 여기

가 호출 코드 :

var result = new Core.Models.Poll 
{ 
    ElectionId = electionId, 
    DatePublished = pubDate, 
    DateCreated = DateTime.Now, 
    NameEn = nameEn, 
    NameFr = nameFr, 
    Params = splitVals, 
    Url = url, 
    Slug = String.Empty 
};  

Components.PollRepository.Insert(result); 
Components.PollRepository.Save(); 

그리고 여기 저장소의 방법과 같습니다 Context.Polls.Add(poll); 라인에서

public void Insert(Poll poll) 
{ 
    Context.Polls.Add(poll); 
} 

public void Save() 
{ 
    Context.SaveChanges(); 
} 

, 나는 내 개체를 검사 ... 내가 수동을 실행할 때 설문 조사의 값을 사용하여 SSMS에 INSERT 문을 삽입하면 레코드가 문제없이 생성됩니다. 다음 줄 (})에서 Context.Entry(poll)을 실행하면 상태가 추가 된 것으로 나타납니다 (예상대로).

저는 IIS Express를 SQLEXPRESS에 대한 로컬 컴퓨터에서 실행하고 있습니다.

[Key] 
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

어떤 도움, 또는 시도 할 다른 심지어 아무것도 크게 감사합니다 :

아, 그리고 여기에 설문 조사 클래스의 열쇠는 (나는 행운과 DatabaseGenerated 속성이 있음을 시도했다).

답변

2

PollReppsitory에서 컨텍스트 변수의 선언을 확인하십시오. 또한 구성 요소의 PollRepository 속성을 확인하십시오. 매번 동일한 인스턴스가 리턴되는지 확인하십시오.

변경 사항을 저장하는 데 사용 된 Context 인스턴스가 삽입에 사용 된 인스턴스가 아닌 경우 이러한 결과가 표시됩니다.

Insert 메서드 내에서 개체의 상태를 확인했습니다. Save 메서드에서 동일한 작업을 수행합니다. 엔티티가 있고 새 상태가있는 경우 삽입 및 저장이 다른 컨텍스트에서 수행된다는 가정을 배제 할 수 있습니다.

+0

아, 나는 분명히해야했습니다. 이것은 WCF REST 서비스입니다. 삽입 요청에서 완전히 다른 요청으로 레코드를 가져 왔습니다. 당신이 제안한대로 선언문을 확인했는데 모두 Ninject에서 왔기 때문에 나는 거기서 안전하다고 생각합니다. (즉, 인서트는 가져 오기와 동일한 구성 요소에서 발생합니다 : 'Components.PollRepository'). 제안에 감사드립니다! –

+0

레코드를 가져 오는 데 너무 신경 쓰지 않아도됩니다. 여기서 중요한 삽입 및 저장 작업입니다. 나는 내 대답을 추가했다. –

+0

Scott의 정답 + 4am = 내 이해력. 나는 오늘 아침에 당신의 대답을 다시 읽었습니다. 오류는 Ninject 설정에 있습니다. 고마워요! –