.NET

GridViewのページングでMEFでImportしたコンポーネントを使う

ObjectDataSourceはデフォルトではTypeNameプロパティに設定されたクラスを自分でインスタンス化しようとします。そうすると、MEFでImportしたコンポーネントを使えないのでObjectCreatingイベントでインスタンスを適切に設定する必要があります。 GridViewP…

ASP.NETの非同期ページについての情報

I/Oバウンドな処理でASP.NETでプールされるスレッドをつかみっぱなしにしないで他のリクエストをさばけるようにI/O待ちのときはスレッドをいったん解放しましょうという話。 Asynchronous Pages in ASP.NET 2.0 ASP.NET の非同期プログラミングを使ったスケ…

WCFのサービスにMEFを使って依存性注入

以下の記事を参考にしました。 Policy Injection Application Block と WCF サービスを統合する この記事はMEFではなくPIABを使っていますが、好きなDIコンテナに置き換えて読めると思います。 簡単なサンプル 簡単なサンプルを作って実際に動かしてみました…

jQueryを使ってWCFのサービスにアクセス

Using jQuery to directly call ASP.NET AJAX page methodsで紹介されているようにPageMethodを使うのがとてもシンプルでいいと思うのですが、PageMethodはstaticメソッドじゃないといけないのでMEFで管理されたインスタンスを取得するの自分でルックアップ…

実行時の型でExportされたオブジェクトをコンテナから取り出す

MEFの CompositionContainer って public T GetExportedValue<T>();というAPIはあるんですが、 public object GetExportedValue(Type type);というAPIがないんですよね。実行時にしか型が決められない場合に困ります。一応、そういった場合を考慮したようなAPI</t>…

各種DIコンテナとASP.NETのWeb Formとの連携

MEFを使おうと思っているんですが、MEFにはWeb Form(Page)に依存注入するような機能はないので(サンプルはありますが)、自分で考える必要があります。例えばこんなことです。 コンテナの生成をフレームワーク側で行うのか、アプリにまかせるか 生成した…

MEFでASP.NETのWeb Formとの連携

下のエントリを踏まえて、MEFを使う場合の連携方法について自分なりの考えを書いておきます。 コンテナの保持 CompositionContainerはシングルトンとして管理します。Webに依存しないようにしておきます。CompositionContainerは、アプリごとに任意のCatalog…

SilverlightのテストサポートについてMicrosoft Connectに要望を提出

2週間ほど前にフォーラムで、Silverlight4の単体テストについてというタイトルのディスカッションを投稿しました。このスレッドで出た意見をまとめて、今度は、Microsoft Connectにフィードバックを投稿しました。簡単にでまとめると、Visual StudioでSilver…

Entity Frameworkについて要望を出そう

機能のリクエストなどのフィードバックを受け付けているそうです。 http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions さっそく3つ登録してみました。 Make it easier to change or wrap a data provider. Support f…

WCF RIA Servicesでモック

WCF RIA ServicesのDomainContextをモックする方法を見て。自分はちょっと汎用的なDomainClientを作ってみました。DomainClientに期待値を返すFuncを登録して使う方式です。 DomainClientのサブクラス(モック) public class MockDomainClient : DomainClie…

名前で動的にプロパティにアクセスする

下の例の2行目のようにプロパティ名で任意のオブジェクトのプロパティに「簡単に」アクセスしたいと思いました。 var value1 = hoge.Aaa; var value2 = hoge["Aaa"]; Assert.AreEqual(value1, value2); 最初、dynamicを使えばすぐできるのかと思ったら無理で…

Silverlightの単体テストの問題点について

ディスカッションという種別でフォーラムに投稿してみました。 http://social.msdn.microsoft.com/Forums/ja-JP/silvelightdotnetja/thread/a6b9e272-6945-49e0-b7c0-04b0774cd694 Silverlight、テストがもう少ししやすければ楽なのになーとよく思います。興…

コードファースト

Entity Framework 4でコード・ファースト開発が注目を集めているとかいないとか。 S2JDBC-Genでも「コードファースト」実現できます、.NETじゃなくてJavaですが。

Soma 0.0.4.0 に向けて

いま持っているアイデア。 SQLの実行前後をEventでフックできるようにする パフォーマンスを向上させる(リフレクションやSQLの解析結果のキャッシュとか) 例外的な状況の精査 Tips集

Soma 0.0.3.0 リリース

Entity Frameworkを使いやすくするO/Rマッパー Soma 0.0.3.0をリリースしました。 http://soma.codeplex.com/releases/view/50678今回のポイントは、セットアップがとても簡単になったことです。これまで、edmxファイルをビルドイベントで書き換えたり、専用…

Entity Frameworkの不便なところ

バージョン番号の自動インクリメント 楽観的排他制御のためにWHERE句に特定のカラムを条件として入れる機能はありますが、「バージョン番号」という考え方がないんですね。したがって、バージョン番号を自動でインクリメントする機能もありません。 これは不…

1メソッド1SQLの原則

Soma 0.0.2.0では、Repositoryのメソッドを呼び出した場合に複数のSQLが自動で実行される場合があります。たとえば、DepartmentにEmployeeを関連付けてDepartmentをINSERTする場合が当てはまります。 var departmentRepository = new DepartmentRepository()…

Soma 0.0.2.0 リリース

ADO.NET Entity Frameworkを使いやすくするO/RマッパーSoma 0.0.2.0をリリースしました。 http://soma.codeplex.com/releases/view/50010 今回の目玉はドキュメントです。スクリーンショットをできるだけ使ってわかりやすくしてみました。 http://soma.codep…

最近のSoma

ドキュメント書いたり、機能改善したりしています。ドキュメントはまだ道半ばですが、「クイックスタート」と「SQLファイル」の項目はほぼほぼ終わり。 http://soma.codeplex.com/documentation 機能改善は細かいものをいくつかやりました。 Entity Framewor…

Expression Blend 4を入れてみた

Expression Blend 4ってMVVMをサポートしていると謳っているんですね。 New ProjectでSilverlight Databound Applicationというテンプレートを選ぶと、ViewとViewModelを使った簡単なサンプルが含まれるプロジェクトが生成されました。そして、ViewからViewM…

PrismのEventAggregatorがスレッドセーフじゃない

Prismの魅力的な機能として、EventAggregator(http://msdn.microsoft.com/en-us/library/ff647984.aspx)というものがあるのですが、コードを見てみたらスレッドセーフじゃなかったです。実装は簡単に差し替えられるので自分でスレッドセーフ版をつくるのが…

Prism 4.0 Drop 3

Silverlight4に対応したというPrism2.2をちょっとみていたのですが、よくよく見ると次のバージョンのベータ版のようなものがPrism 4.0 Drop 3としてリリースされていました(Dropって感覚的にアルファとかベータみたいなものだと思うんですけど、バージョン…

Visual Studioで2 Way SQLが扱いやすい

Management Studioが入っているからなのかわからないですが、Visual Studio 2010で拡張子が.sqlのファイルを開くとエディタでSQLを補完したり、エディタからSQLを実行できますね(Management Studioの機能をつかっているみたい)。前のバージョンからそうな…

SQLのログハンドリングについて

SQLのログって自由にハンドリングしたいですよね。 Somaではこんなインタフェースを用意しました。 public interface ILogger { void LogBeforeExecution(LogContext logContext); void LogAfterExecution(LogContext logContext); } LogBeforeExecutionはSQ…

Repositoryパターン(aka DAOパターン)について

SomaではRepositoryパターンは必須というわけではないですが、推奨しています。 次のような抽象クラスを提供しています(メソッドとコンストラクタはシグネチャだけを表示)。 public abstract class RepositoryBase<TObjectContext, TEntity> where TObjectContext: ObjectContext wh</tobjectcontext,>…

Soma 1stリリース

.NET Framework用O/Rマッパー? Soma 0.0.1.0 をリリースしました。 マッピングするところはADO.NET Entity FrameworkにおまかせなのでO/Rマッパーというと語弊があるかなぁ。どんなものかはプロジェクトの概要(http://soma.codeplex.com/)に書きましたが、…

SQLのログ出力できた

Soma(http://soma.codeplex.com/)でSQLのログ出力を実装できました。 たとえばこんなコードを記述すると using (var context = new SampleEntities()) { context.Employee.Where(e => e.Id > 1).ToList(); Console.WriteLine("------------"); context.Exe…

Repository

Entity FrameworkのサンプルだとDaoじゃなくてRepositoryのほうが多い気がするのでDBアクセスを行うクラスをRepositoryと呼ぶことにします。自分の中ではどっちもおんなじですけど。アプリでつくるRepositoryはこんな感じになります。 public class Employee…

SQLの管理

SQLの管理ですが、リソースファイル(resxファイル)を使うのがいいんじゃないかと考えています。いままで試したことがなかったのですが、リソースファイルでは文字列や画像だけでなくテキストファイルを管理できるのでこれが使えるんじゃないかと。 リソース…

SQLのログ

Somaは、Entity Frameworkをベースにしたフレームワークにすることにしました。PostSharpを使うのは見送り。O/Rマッパーには必須と思われるSQLのログを出力する機能がEntity Frameworkにはないので、プロバイダーをラップしてSQLが実行される直前でログ出力…