簡體   English   中英

在Silverlight RIA服務中實現SQL的“不存在”

[英]Implementing SQL's “not exists” in Silverlight RIA services

我正在嘗試將Silverlight與RIA服務一起使用。 CRUD操作非常簡單。 但是我堅持“不存在”的情況。

我有兩個實體Person( personID ,personName)和Car( carIDpersonID )。 有人有汽車,但只有一輛。

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM