2017-10-15 14 views
1

にLINQで新しい親を作成するときに、私は関係の基本セットを反映するためにSQLのDataContextに設定LINQあります移入の子エンティティSQL

予定は1つのクライアント、1人の従業員と多くのAppointmentServicesを持っています。各AppointmentServiceにはServiceDefinitionが1つあります。それぞれは、プライマリおよび外部キーによって他のものにリンクされています。

LINQ to SQL relationships

私はメモリ内に新しい予定を作成し、クライアントIDと社員コードを読み込みます。私はメモリにAppServiceを作成し、tmpAppointment.AppServicesに設定されたエンティティにAppServiceを追加します。

tmpAppointment = New Appointment 
tmpAppointment.ClientID = 1 
tmpAppointment.EmployeeID = 2 

tmpAppService = New AppService 
tmpAppService.ServiceDefinitionID = 123 

tmpAppointment.AppServices.Add(tmpAppService) 

それは、それぞれのデータベースに予定またはアプリのサービスのいずれかを挿入することなく、メモリ内の各AppServiceのサービス定義を移入することは可能ですか?ユーザーはこのプロセスをキャンセルする可能性があり、データベースから不必要に削除して追加することを避けたいだけでした。

ユーザーがアンバウンドコントロールを使用したいと考えていることを確認した後で、これをすべて試してみることができましたが、LINQ to SQLがより洗練されたソリューションを提供しているのだろうかと思いました。

私が試みた:

tmpAppointment.AppServices.Load

次いでnew ServiceDefinitionを作成それを移入した後、DBから正しいサービス定義を選択AppServices

に追加しますそれをAppServicesエンティティセットに追加する

最初は何もしませんし、後者の二つは、DataContextのクラスの中から、次のスロー:

のSystem.InvalidOperationExceptionが:自動生成されたラインで

「配列に複数の要素が含まれている」

<Global.System.Data.Linq.Mapping.AssociationAttribute _ 
    (Name:="AppService_ServiceDefinition", Storage:="_AppServices", _ 
    ThisKey:="ServiceID", OtherKey:="ServiceDefinitionID", _ 
    IsForeignKey:=true)> 

Public Property AppService() As AppService 
Get 
    Return Me._AppServices.Entity 
End Get 

Set 
    Dim previousValue As AppService = Me._AppServices.Entity <<<< error thrown 

ありがとうございます。

答えて

0

IDを割り当てる代わりに、エンティティ全体を割り当てる必要があります。

tmpAppService.ServiceDefinitionID = 123 

は、この方法で

tmpAppSerice.ServiceDefinition = someServiceDefinition 

となり、それがすべて同時に挿入され、LINQ-2-SQLには、適切なIDの

+0

の設定と割り当てがしかしやって、ありがとう扱い私が言及したエラーを投げる。私はその正面の詳細について私の質問を更新しました。 – George

+0

私は問題を投げている私のエラーを解決しました。私がそれをしたら、私は手動でServiceDefinitionエンティティを設定することができました。ありがとうございました。この問題を抱えている他の人には、LINQ to SQLは期待どおりに機能しますが、関連付けを正しく設定する必要があります。親と子の関係を基本的に私が元々持っていたものとは逆に変更したところ(上の参照図)、物事は正常に機能し始めました。 – George

関連する問題