Entity Framework 4.3.1을 사용 중이고 내 탐색 속성에 문제가 있습니다. 내 맥락에서탐색 속성 null Entity Framework 4.3.1
, 내가 설정 한 지연로드 : 또한
public MyContainer()
: base(ConnectionString, ContainerName)
{
this.ContextOptions.LazyLoadingEnabled = true;
}
, 나는 (내 모델에서 실제로 내가 그것을 생성) 가상이 재산을 만들었습니다 :
public virtual Driver Driver
{
get { return _driver; }
set
{
if (!ReferenceEquals(_driver, value))
{
var previousValue = _driver;
_driver= value;
FixupDriver(previousValue);
}
}
}
private Driver _driver;
이에 Ride라는 엔티티. 그러나, 내가 액세스 할 때 myContext.Ride.Driver
그것은 null입니다. 런타임 동안 Ride 엔티티를 검사 할 때 외래 키가 실제로 예상 된 드라이버의 ID로 채워지는 것을 볼 수 있기 때문에 이것은 이상합니다.
내가해야 할 일이 있습니까?
새 라이드를 생성 할 때 DriveID을 설정했지만 이후에 ID를 얻은 드라이버는 탐색 속성으로 자동 추가되지 않습니다.
좋아, 방금 해결 했으므로 대답을 공유 할 것입니다. 드라이버 엔티티를 컨텍스트에 다시 첨부해야했습니다. myContext.Driver.Attach (Driver) 그럼 난 할 수 : Ride.Driver = Driver 대신 Ride.DriverID = Driver.DriverID. 난 그냥 내 자신을 그것을 해결,
db.Driver.Attach(Driver); // Driver is a public property in my class
myNewRide.Driver = Driver;
db.SaveChanges();
좋아요, 저는 방금 직접 해결 했으므로 답변을 공유 할 것입니다. Driver 엔티티를 컨텍스트에 다시 첨부해야했습니다. 'myContext.Driver.Attach (Driver)'. 그럼'Ride.DriverID = Driver.DriverID' 대신'Ride.Driver = Driver'를 할 수 있습니다. – Davio
답장으로 답을 쓰십시오. 그래서 모두가 해결되었다고 봅니다. 고마워요. –
:-) 거의 내가 의미했던 것. 귀하의 질문에 "대답 필드"가 보이십니까? 나는 당신의 솔루션을 거기에 놓을 것을 생각했다. 왜냐하면 당신은 이후에 "대답으로 표시"를 클릭 할 수 있기 때문이다. –