0

私はSOAアーキテクチャーに取り組んでいます。だから私はデータベースにアクセスできません。サーバー上のDTOをエンティティとして使用します。クライアント上のエンティティを入力してサーバーに送信すると、エンティティの主キーが生成されます。

そして私は(クライアント側)を使用します

_customerDomainContext.SubmitChanges(SubmitChangesCallback、null);

新しく追加されたエンティティにアクセスしようとすると、コールバックで、入力したプロパティのみが表示されます。

以下に示すように、ドメインサービス(サーバー側)で送信されたエンティティにアクセスできます。

   [Insert]
    public void InsertCustomerDTO(CustomerDTO customer)
    {
      CustomerDTO customerFromDB = CreateCustomerDTOCore(customer);
    }

新しく生成されたエンティティをクライアントに取得して、SubmitChangesでエンティティの新しく生成されたキーにアクセスできるようにする方法はありますか?

任意の提案をいただければ幸いです。

4

1 に答える 1

1

コールバックの引数を使用するだけです。

context.SubmitChanges(x =>
            {
                //Contains your entities fulfilled by the server
                x.ChangeSet
            }, null);

これには、保存後にサーバーから返されたエンティティが含まれているため、キーフィールドに実際のキー値が表示されます。
上記のプロセスを実行するには、エンティティを「編集」する必要があることが明らかでない場合があります。

[Insert]
public void InsertJeopardyModel(CustomerDTO jeopardy)
{
    CustomerDTO customerFromDB = CreateCustomerDTOCore(customer);
    jeopardy.Id = customerFromDB.Id;
    jeopardy.MyProperty = customerFromDB.MyDBEquivalentProperty;
}

編集したサンプルでわかるように、Enitity FrameworkやLINQ2SQLと同じように、実際にCustomerDTOオブジェクトを編集しています。
その編集されたエンティティは、Changesetプロパティで公開されるクライアントにシリアル化されます。

于 2012-10-30T21:21:11.507 に答える