SilverlightとRIAサービスを併用しようとしています。 CRUD操作はかなり簡単です。しかし、私は "存在しない"ケースで立ち往生しています。Silverlight RIAサービスでSQLを「存在しない」実装
私は2つのエンティティ人(PERSONID、PERSONNAME)と車(carID、PERSONID)を持っています。一部の人は車を持っていますが、車は1台しかありません。
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> GetPersonEager()
{
return this.ObjectContext.Person.Include("CarNavigation");
}
<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());
この構造は、更新のために、かなりうまく動作します。私は車の名前を更新することもできます。
しかし、車を持っていない人も記載したいと思っています。そして私はまた彼らに車を加えることができるようにしたい。私は試してみました:
上記の方法は私に車のない人を返しますが、Carエンティティは空です。どのように私はそれが車なしで人を返すようにこれを修正する必要があり、車のエンティティのキーがいっぱいです。
私はあなたの質問を理解しているかわかりません。空のCarエンティティを返すようにしますか? – Danexxtone
"personID"フィールドが満たされ、carNameが空のCarエンティティを返したいとします。だから私はそれを埋めることができます。私は車のない人を見つけながら左に参加するので、私は彼らの(車の)personIDフィールドを知っています。したがって、エンティティフレームワークもそれを知っているはずです。しかし、GetPersonEagerWhoDoesNotHaveACar()メソッドは、車のない人を返しますが、私はPerson.CarNavigation.personIDフィールドが埋まっていると思います。たぶん私のクエリが間違っているか、あるいはEFがそれをサポートしていないか、多分私はいくつかのカスタマイズを行うべきでしょうか、別のアプローチを開発する必要があります;) – fkucuk