「Visual Studio」カテゴリーアーカイブ

JimmyがMSを辞めてしまいました。

jimmy.thinking: “Start spreading the news”: the future of Jimmy and IronRuby

Though Frank Sinatra says it best, “I’m leaving today” isn’t exactly accurate; my last day as a Microsoft employee was July 23rd, 2010. This post is almost two weeks delayed as Felicia and I have been on the road since the 26th, driving cross-country to the east coast; we also decided to leave Seattle in favor of New York, our home state.

今までIronRubyチームを率いてきていて、IronRubyの顔でもあったJimmy Schementi氏がMSを辞めてしまったようです。

Blogの中ではMS内で動的言語チームの予算と規模が縮小されている話や、それにより諸々のリリースが遅れていること、この前のライセンス変更もそうした中でDLRやIronRuby、IronPythonを継続させていくために執った処置であることが書かれており、かなり衝撃的です。そして、その代わりに今愛が注がれているのがIE9のJavaScript Engineだとも。

Jimmy自身はMSを辞めNYで職を得たようです。また、社外には出るが、IronRubyのコミッティには残ってCoreに関わるとのことなので、今後の活躍に期待したいです。

C# : Entity Framework(.NET Fx 3.5)簡単なまとめの追加 リレーションシップの更新

例のごとくこのようなデータ構造になっているとします。

SQLのテーブル:

image

Entity Frameworkのモデル

image

ProjectテーブルとShipテーブルにはリレーションが設定されています。

リレーションシップの変更

リレーションの変更を行いたい場合があります。たとえば上の例だとProjectでは船の所属を管理し、Shipでは船を管理しているのですが、船の所属を変えたい場合、普通にSQLで考えるとShipテーブルのprojectIdを変更すればいいだけですが、.NET Fx 3.5のEntity Frameworkではかなりやっかいです。

Entity Frameworkのモデルではテーブル間じゃないオブジェクト間のリレーションは、オブジェクト指向的な解釈で解決されているので、かなりやっかいです。もうこの辺を詳細に見出すとEntity Frameworkがいかに宇宙飛行士用のFrameworkであるか実感できます。

愚痴はともかく実際のコードです。

 

大事なのは25行目から31行目です。

まずリレーションを変更したいShipオブジェクト(ship2)とそれた新たにリレーションを持たせたいProjectオブジェクト(project4)をコンテキストから取得します。(25行から27行)

次に取得したShipオブジェクトのProjectへのリファレンスであるProjectReferrence(EntityReference<T>)のEntityKeyプロパティに、コンテキストのCreateEntityKeyメソッドでリレーション先のKeyを作り挿入します。(29行)

コンテキストの SaveChange メソッドで、この変更をデータベースに反映します。(31行)

コード自体はシンプルですが、SQLえいえいっとやることに比べるとかなり回りくどいというか、きわめてOOP的で、SQLでのデータ操作に慣れているとかなり直感的でないです。だいたい外部キーに指定しているいるフィールドの値を書き換えるだけなのに、何で直接変更できずにこうなるんだか、もう何が何だか。

さすがに .NET 4 では改良され、外部キー指定されているフィールドを(OOP的に)直接更新できる様なので、もう少し直感的に変更できるはずです。

参考:

C# : Entity Framework(.NET Fx 3.5)についての簡単なまとめ

もういささか古い情報になってしましたが、.NET Framework 3.5 SP1のEntity Frameworkについて簡単にまとめます。

まぁ俺様用防備録。

対象となるデータの構造

説明の対象となるデータは以下のような構造を持つとします。

image

データの検索

リレーション先のデータを含めて検索(クエリー)をするにはfrom句でエンティティオブジェクトを指定するときに.Include()をつけて、検索結果に含めるリレーション先オブジェクトへのパスを指定します。

以下の例では子のShipエンティティtに対するクエリーで、関連している親のProjectエンティティのオブジェクトを含むようにLinq式で指定しています。

また、親から子方向であれば以下のようにシンプルに書くこともできる。

データの追加

親テーブルであるProjectへのデータ追加に関しては以下のようなコードになります。ADO.NETのデータセットを知っている人にとっては理解しやすいコードです。

子テーブルであるShipへのデータ追加については親テーブルとのリレーション(関係)をナビゲーションプロパティを使って定義しなければならないのでやや複雑になります。

データの更新

子テーブルであるShipへのデータ更新について見てみます。

更新対象がわかっているなら、更新対象を特定し、アタッチしたら、更新対象のプロパティを変更します。

データの削除

子テーブルのデータの削除についても、基本的には子テーブルへのデータ追加と同じでリレーションをとってアタッチしてからとなります。

接続文字列

設定ファイル記述等により動的に接続サーバーを変更する必要がある場合には、SqlConnectionStringBuilderクラスと EntityConnectionStringBuilderクラスを使用して接続文字列を生成します。(通常本運用と開発ではSQL Serverが違うし、そんな設定項目にするよね。)

MetaDataはEDMのデザイナーが生成する接続文字列から持ってきます。

image

この接続文字列を使ってエンティティコンテナがデータベースサーバにアクセするようにするには、エンティティコンテナのコンストラクタの引数にこの接続文字列を指定します。

Visual Studio LightSwitch

http://www.microsoft.com/visualstudio/en-us/lightswitch

くわしくはJasonのBlogを確認していただくとして、これが何かというと完全のノーコーディングでビジネスアプリを作っちゃおうというものです。当然ドメイン的な制約はあるわけですが、世の中のビジネスアプリケーションのほとんどが実は単票入力、集計アプリケーションである事実を考えれば、これでほとんどカバーできてしまうのかもと思う次第。

いやー何このお気楽さ。

実際に触れるものの公開はもうちょっと先みたいなので、楽しみですね。

まぁInfoPathの立場は?とか思ったりもしますけど。

先ほどのBlogからスクリーンショットをちょっとお借りして。。。

続きを読む Visual Studio LightSwitch

近々Channel 9のサイトがリニューアルするようです。

ということで、プレビューサイトがオープンしたようです。

Check out this preview of an all new Channel 9. We’re looking forward to your feedback and suggestions. If you are interested in how it was built and the decisions we made about the architecture, check out this video with Charles and Sampy.

Preview The New Channel 9 | jeffsand | Channel 9

image

なかなかいいんじゃないでしょうか。

Windows Phone Developer Tools Beta Released

WP7 SDKがTechnical PreviewからBetaにあがりました。

First things first: go get the Windows Phone Developer Tools Beta. It has arrived!

The term “Beta” is understood to mean that things are close to being finished.  Well, that’s what we mean anyway. This Beta release represents the near final version of the tools for building applications and games for Windows Phone 7. 

Since the initial CTP release of the tools just this March, the Windows Phone Developer Tool CTP has been widely embraced by the community, and they have shown what’s possible on our new development platform.

It’s time to get serious about building the actual apps and games for Windows Phone 7 that consumers will be looking for starting this holiday season.

Windows Phone Developer Tools Beta Released

機能追加点、変更点についてはリリースノートを。

FMラジオ向けのクラスなんかが追加されていますね。

Windows Azure Tools for Microsoft Visual Studio 1.2 (2010 年 6 月)

そゆもの。紺碧に魅せられた人々にとっては待望のリリース。

ダウンロードの詳細 : Windows Azure Tools for Microsoft Visual Studio 1.2 (2010 年 6 月)

だが事前準備がいるので注意が必要だ。

上ページの「必要システム」をよくよく確認してからインストールしよう。

Microsoft teched US : Deep Dive into Microsoft ADO.NET Entity Framework

Get Microsoft Silverlight

Deep Dive into Microsoft ADO.NET Entity Framework

名称からするとあれですが、内容的にはEF 4での仕組み部分での総括的な内容です。とは言ってもそんなにインターナルな内容でもなく、利用者として知っておいた方がいいレベルなので、すごく難しい内容ではなかったです(除く英語)。

ということで気が向いたら(w)US TechEdで目についたセッションのビデオを紹介していきます。

Silverlight 4 Tools(日本語版)

さりげなくダウンロード可能になっていた模様。

ダウンロードの詳細 : Silverlight 4 Tools

このダウンロード ファイルによって、以下に示す、Silverlight 4 および RIA Services の開発に必要なすべてのコンポーネントがインストールされます。

  • Silverlight 4 開発者ランタイム
  • Silverlight 4 SDK (ソフトウェア開発キット)
  • Visual Studio 2010 および Visual Web Developer Express 2010 用の更新プログラム (KB982218)
  • Silverlight 4 Tools for Visual Studio 2010
  • WCF RIA Services V1.0 for Silverlight 4
  • F# Runtime for Silverlight 4