2011-12-27 4 views
0

SilverlightとRIAサービスを併用しようとしています。 CRUD操作はかなり簡単です。しかし、私は "存在しない"ケースで立ち往生しています。Silverlight RIAサービスでSQLを「存在しない」実装

私は2つのエンティティ人(PERSONID、PERSONNAME)と車(carIDPERSONID)を持っています。一部の人は車を持っていますが、車は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エンティティは空です。どのように私はそれが車なしで人を返すようにこれを修正する必要があり、車のエンティティのキ​​ーがいっぱいです。

+0

私はあなたの質問を理解しているかわかりません。空のCarエンティティを返すようにしますか? – Danexxtone

+0

"personID"フィールドが満たされ、carNameが空のCarエンティティを返したいとします。だから私はそれを埋めることができます。私は車のない人を見つけながら左に参加するので、私は彼らの(車の)personIDフィールドを知っています。したがって、エンティティフレームワークもそれを知っているはずです。しかし、GetPersonEagerWhoDoesNotHaveACar()メソッドは、車のない人を返しますが、私はPerson.CarNavigation.personIDフィールドが埋まっていると思います。たぶん私のクエリが間違っているか、あるいはEFがそれをサポートしていないか、多分私はいくつかのカスタマイズを行うべきでしょうか、別のアプローチを開発する必要があります;) – fkucuk

答えて

0

「車を持っている人がいますが、車が1台しかありません」 - 間違ったDBアーキテクチャーがあるとします。 Personにnull値のcarIdを配置しないのはなぜですか?そのような場合には、関連するかどうかにかかわらず、必要なものすべてを簡単に組み込み(追加、削除など)します。Car

注:現在のアーキテクチャでこのようなアプローチが必要な場合は、クエリを返す必要があるものを明確にします(接続されていないアイテムの場合はCarを持つPersonのリストをnullに設定します)。

+0

私は実際のアーキテクチャを単純化しようとしました。申し訳ありませんが、「何を返すべきかをどのような目的で追加するか」ということを理解していませんでした。 – fkucuk

+0

@caisenm Ok。私はedmxの関係に問題があると思う。そういうわけで、あなたはあなたのものに悩まされています。 –

+0

@caisenm申し訳ありませんが、回答が編集されました。 –

関連する問題