[英]Implementing SQL's “not exists” in Silverlight RIA services
我正在嘗試將Silverlight與RIA服務一起使用。 CRUD操作非常簡單。 但是我堅持“不存在”的情況。
我有兩個實體Person( personID ,personName)和Car( carID , personID )。 有人有汽車,但只有一輛。
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());
此結構可以很好地進行更新。 我也可以更新汽車的名稱。
但是,我也想列出沒有汽車的人。 而且我也希望能夠為他們添加汽車。 我努力了:
public IQueryable<Person> GetPersonEagerWhoDoesNotHaveACar()
{
return this.ObjectContext.Person.Include("CarNavigation").Where( x => x.CarNavigation == null );
}
上面的方法向我返回沒有汽車的人,但是Car實體為空。 我如何修改它,使它返回沒有汽車的人,並且汽車實體的密鑰已填滿。
如果“某人有一輛汽車,但只有一輛汽車”-那么您的數據庫體系結構錯誤。 為什么不將可空的carId放入Person
? 在這種情況下,無論有沒有相關的Car
,您都可以輕松地包含和操縱(添加,刪除等)您想要的所有內容。
注意:如果您需要采用當前體系結構的這種方法-請說明應返回什么查詢(對於未連接的項目,“汽車的人的列表”設置為null)以及用於什么目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.