Silverlight에서 RIA 서비스를 사용하려고합니다. CRUD 작업은 매우 쉽습니다. 그러나 "존재하지 않는"경우가 붙어 있습니다.Silverlight RIA 서비스에서 SQL을 "존재하지 않음"으로 구현
내가 두 엔티티 사람을 (carID이을 personID) 및 차량 (이, PERSONNAME을 personID)이있다. 어떤 사람에게는 차가 있지만 단 하나의 차가 있습니다.
<sdk:DataGrid Name="PersonGrid" AutoGenerateColumns="False">
<sdk:DataGrid.Columns >
<sdk:DataGridTextColumn Binding="{Binding personID}" />
<sdk:DataGridTextColumn Binding="{Binding personName}" />
<sdk:DataGridTextColumn Binding="{Binding CarNavigation.carName}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
PersonGrid.ItemsSource = context.Person;
context.Load(context.GetPersonEager());
public IQueryable<Person> GetPersonEager()
{
return this.ObjectContext.Person.Include("CarNavigation");
}
이 구조 internal sealed class Person
{
private PersonMetadata() { }
public int personID { get; set; }
public string personName { get; set; }
[Include]
public Car CarNavigation { get; set; }
}
internal sealed class Car
{
private CarMetadata() { }
public string carName { get; set; }
public int personID { get; set; }
}
는 업데이트를 꽤 잘 작동합니다. 차의 이름도 업데이트 할 수 있습니다. 그러나 나는 자동차를 소지하지 않은 사람도 기재하고 싶습니다. 그리고 나는 또한 자동차를 추가 할 수 있기를 원합니다. 나는 시도했다 :
public IQueryable<Person> GetPersonEagerWhoDoesNotHaveACar()
{
return this.ObjectContext.Person.Include("CarNavigation").Where(x => x.CarNavigation == null);
}
위의 방법은 나에게 차가없는 사람을 돌려 준다. 그러나 Car 엔티티는 비어있다. 어떻게하면 차가없는 사람들을 돌려주고 차 엔티티의 키가 채워지도록 수정해야합니까?
귀하의 질문을 이해할 수 있을지 잘 모르겠습니다. 빈 Car 엔터티를 반환 하시겠습니까? – Danexxtone
"personID"필드가 채워지고 carName이 비어있는 Car 엔티티를 반환하고 싶습니다. 그래서 나는 그것을 채울 수있다. 차가없는 사람을 찾으면서 왼쪽 조인을하기 때문에 차 (car ')의 personID 필드를 알 수 있습니다. 따라서 엔티티 프레임 워크도이를 알아야합니다. 그러나 GetPersonEagerWhoDoesNotHaveACar() 메서드는 차가없는 사람을 반환하지만 Person.CarNavigation.personID 필드가 채워질 것으로 예상합니다. 어쩌면 내 쿼리가 잘못되었거나 EF가 지원하지 않거나 일부 사용자 지정을 수행해야하거나 다른 방법을 개발해야 할 수도 있습니다.) – fkucuk