kazuk は null に触れてしまった

C# / .NET 系技術ネタ縛りでお送りしております

dbml のAssociationの逆参照を得る


先日のttソースの貼り付けで酷い目にあったから。コード貼り付けのテストだったりする。

    XElement GetReverseAssociation( XElement assoc )
    {
        var typeElement = (from db in dbmlDoc.Elements( dbmlNs+"Database" )
                          from table in db.Elements( dbmlNs+"Table" )
                          from type in table.Elements( dbmlNs+"Type" )
                          where type.Attribute("Name").Value==assoc.Attribute("Type").Value
                          select type).Single();
        return (from revAssoc in typeElement.Elements( dbmlNs+"Association" )
                where revAssoc.Attribute("Name").Value==assoc.Attribute("Name").Value
                select revAssoc ).Single();
    }

 

って感じで dbml (LINQ to SQL のメタデータ)から参照に対する逆参照を得られる。

    XDocument dbmlDoc;
    XNamespace dbmlNs;
をフィールドとして用意する事、それぞれ以下の様な初期化をする必要がある。
    dbmlNs = "http://schemas.microsoft.com/linqtosql/dbml/2007";
    dbmlDoc = XDocument.Load( dbmlFilePath );

パラメータの XElement assoc には dbml内の Association 要素を指す XElement を渡してね!

テストだから崩れても泣かない。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。