Visual Studio 2010 EF4 Complex Typeをためしてみた

今日はEF4に搭載される新機能をご紹介します。。。。EDMデザイナのComplex Typeサポートにしましょう。現行バージョンをご存じでない方は事前にMSDNのサイトをご覧ください。

http://msdn.microsoft.com/ja-jp/library/bb738613.aspx

現行のVS2008SP1ベースのEF v1はEDMデザイナを利用してComplex Typeを定義することができませんでした。そのため、CSDLやSSDLなどのXMLをゴリゴリ修正する必要がありました。EF4ではEDMデザイナでサポートされるため、非常に簡単に定義して利用することができます。

1.EDMデザイナ上で右クリックします。コンテキストメニューから「Add」を選択すると「Complex Type」というItemが追加されているのが分かります。

 

2.「Complex Type」を実行するとModelブラウザ上のComplex TypesフォルダにComplex Typeが生成されます。生成されたComplex Typeの名称の変更をしておきましょう。ここではNameとしました。次にEDMデザイナ上のエンティティから関連するプロパティをコピーして、Modelブラウザの生成されたComplex Type上にペーストします。ここではauthorsエンティティのau_fname、au_lnameプロパティをコピー&ペーストしました。尚、コピー&ペーストを使わないでマニュアルでプロパティを追加することも可能です。

3.次にエンティティに対してComplex Typeを追加してみましょう。エンティティのコンテキストメニューから「Add」を選択し、「Complex Property」を選択します。名称を先ほど生成したComplex Typeと同じ「Name」に変更します。

4.最後にMapping Detailウィンドウでプロパティとカラムをマッピングします。

5.ソースコードからは従来通りアクセス可能です。

        static void Main(string[] args)

        {

            pubsEntities db = new pubsEntities();

            var authors = db.authors;

            foreach (var author in authors)

            {

                Console.WriteLine(author.Name.au_lname + " " + author.Name.au_fname);

            }

        }