0

現在、spとudfを使用して、消費のためにWebサービスを介してクライアントに送信されるXMLドキュメントを生成しています。私は以前にORM(エンティティとオープンアクセス)を使用しましたが、常に単一のクラス(テーブル)と直接対話しました。複数のテーブルに移動する必要のあるデータがある場合は、コードで分解し、データが属するORMクラス(テーブル)を更新するだけです。

もう少し複雑にできるかしら。どういうわけか、これらすべてのフィールドの集合体である複雑なオブジェクトをORMに作成できますか?言い換えると、複雑なormオブジェクトのコンストラクターに必要なレコードキーを渡します。次に、オブジェクトはすべてのテーブルから必要な情報を収集し、オブジェクトを私に返します.....それをxmlにシリアル化して、その方法で送信することができます。

ORMまたはDBのどこかに、すべてのピースをまとめるロジックが必要なので、実際には入力を探しているだけだと理解しています。

4

1 に答える 1

1

複数のテーブルのデータで構成されるオブジェクトが必要な場合は、すべてのテーブルを .edmx ファイルに追加するだけです。そこから、必要なものを取得するクラスを作成できます。1:1 ペアリングの必要はありません。私のメソッド内で、たとえば主キーに基づいてオブジェクトを作成TableAできます。

    Obj GetObj(string primaryKey)
    {
        dataBase context = new dataBase();
          var obj = (from a
                     in context.TableA
                     where a.Id == primaryKey
                     select a);
          var otherObj = (from b
                          in context.TableB
                          where b.Id == a.ForeignKey
                          select b);

         Obj foo = new Obj();

         foo.Id = a.Id;
         foo.SomethingElse = a.Somthing;
         foo.FromB = b.Id;
         foo.AnInt = (int)b.count;

         return foo;
    }

いくつかの変更を保存するには;

   void AddNewObject()
   {
         dataBase context = new Context;
         TableA a = new TableA();
         TableB b = new TableB();

         a.Id = this.Id;
         a.OtherField = this.OtherField;
         b.Key = this.BKey;
         b.SomeInt = this.SomeInt;

         context.AddObject("TableA", a);
         context.AddObject("TableB", b);

         context.SaveChanges();
   }

もちろん、これらには含まれていないエラー処理が必要になりますが、概念は、標準の EntityObject<->Table マッピングがある場合とそれほど変わりません。通常のマッピングの一部を保持してから、その上にクラスを構築する方が簡単だと思います。

于 2012-12-14T23:21:33.347 に答える