SqlMetalはVisual Studioをインストールするとついてくるコマンドラインツールで、初期では下記にある。
drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin
ここでいくつか使い方をみてみよう。
DBの環境は下記の通り:
SQL Server名: .\SQLSERVER2008R2
UID: sa
PWD: password
DB: TestDB
SqlMetal /server:.\SQLSERVER2008R2 /database:TestDB /user:sa /password:password /code:"C:\MatsuoSoftware\TestDB.cs" /map:"C:\MatsuoSoftware\TestDB.map" /serialization:Unidirectional /context:TestDBDataContext /namespace:MatsuoSoftware.Data /sprocs /functions
/server, /database, /user, /passwordはDBへの接続情報。/code, /mapで出力先と出力方法を指定する。ここで/dbmlを指定することも可能だが、その場合は/code, /mapオプションとは一緒に使えない。dbmlで出力するか、csファイルとmapファイルで出力するかの二択だ。/serializationでシリアル化の方法を指定する。Unidirectionalを指定するとDataContract, DataMember属性が生成されるクラス、プロパティに付与されるのでWCFサービスの戻り値や引数としてそのまま使用することが可能になる。/context, /namespaceは見ての通りだ。/sprocs, /functionsでストアドプロシージャと関数も出力に含めるよう指定している。
他にも基底クラスを指定する/entitybaseなどがあるので下記を参考に自分の目的にあったオプションを見つけて欲しい。
SqlMetal.exe (Code Generation Tool)
最後に、マッピングファイルの読み込み方法で苦労したので参考までに紹介しておく。
Assembly assembly = Assembly.GetExecutingAssembly(); var stream = assembly.GetManifestResourceStream("TestDB.map"); XmlMappingSource mappingSource = XmlMappingSource.FromStream(stream); return new TestDBDataContext(connectionString, mappingSource);
マッピングファイルのビルドアクションをResourceにしてからでないとなぜだか読み込めなかったのでGetManifestResourceStreamを使用している。
0 件のコメント:
コメントを投稿