C#

automapperを6.1.1から6.2.1へバージョンアップしたら例外がスローされた

開発の区切りが良かったのでライブラリを一斉にアップデートしたところAutoMapperの初期化のタイミングでテストがコケるようになりました。例外は以下の内容です。 System.InvalidOperationException: 'Mapper already initialized. You must call Initializ…

migrationのテーブル名や列名をLowerSnakeCaseに設定する

EF Coreを利用してCodeFirstでMigrationによりデータベースのテーブルを作成するときですが、テーブル名と列名がC#のプロパティ名となるため、デフォルトではUpperCamelCaseになります。 これを変更するにはテーブル名であれば{Table("table_name")、列名で…

異なるプロジェクトにあるContextでMigrationを実行する

複数のプロジェクトで構成されたソリューションのうち、Startupプロジェクト以外でef migrationsを実行する場合には以下のようにDbContextを含むプロジェクトでマイグレーションコマンドを実行する必要があります。 SampleSln -- StartupProject -- Reposito…

C#でDbGeographyに定義したPolygonの巻きを補正する

こんにちは。beaglesoftの真鍋です。 SQL ServerでGeographyのポリゴンを扱う場合には右巻/左巻で世界が一変するわけで、結構重要です。普通はSQL Serverで以下のクエリを発行すればよしなに行ってくれます。 -- geomがポリゴンを保存しているGeeography型の…

EFのMigrationでDefaultValue制約を削除する

こんにちは。beaglesoftの真鍋です。 SQL Server上でEntityFramework4を利用したCodeFirst開発を行う時のことなのですが、NotNull制約(Require属性)を設定した列の定義をNullableへ変更するとき、MigrationでDefaultValue制約を削除する処理を追加しなけれ…

beaglemapを少しだけ改修しました

みなさん、こんにちは。beaglesoftの真鍋です。 先日のりといきおいで公開したbeaglemap - beaglemapですが、少しだけ改修しました。主な回収内容は表示と不具合です。 表示 地図を表示するために住所を検索するのですが、この処理が遅いので処理中表示を行…

YOLP(地図)に市区町村の町目境界をマッピングする

こんにちは。beaglesoftの真鍋です。 ちょっとお試しなのですが、YOLP(地図):YOLP(地図) - Yahoo!デベロッパーネットワークを利用して市区町村の町目境界を表示するアプリケーションを削井してみました。まだ、複数の市区町村が表示されるときに中心が1つ目…

C#でリストを持つエンティティからフラットな構成のXMLを作成する

こんにちは。beaglesoftの真鍋です。 XMLを作成するときに、Listなどのフィールドを保持するクラスからXMLを生成するときに、要素が二重になってしまうことがありちょっと調べたことがありますのでまとめます。 サンプルの全体はGitHubからダウンロードでき…

MSTestが動作しない…

ある日突然MSTestがうんともすんとも言わなくなりました。ResharperのUnitTestRunnerを利用してテストを行っても全く反応がないのです。いろいろと調べてみたのですが、よくわかりませんでした…。 とりあえず、NUnitに載せ替えようかなどと考えつつ途方に暮…

SQL ServerのID列に明示的な値を追加する

EntityFrameworkを利用しているとSQL ServerでもID列を利用することが多いのですが、モデルを変更時にデータを再登録しなければならないときはちょっと面倒です。 Railsの場合、テーブルスキーマに対応するモデルの変更があった場合もデータを保持してくれる…

リフレクションでインスタンスのプロパティを取得する

C#

リフレクションを利用するときのメモ。instanceオブジェクトのプロパティ一覧を取得してから、プロパティの値を取得する方法。 取得対象はpublicなプロパティ。 [sourcecode language="csharp"] var infoArray = instance.GetType().GetMembers(BindingFlags…

BitConverterで文字列化したByte配列を復元する方法

暗号化モジュールなどを利用する場合、暗号化後のByte配列の扱いに困ることがあります。Unicodeでエンコードした文字列にすると、複合時にうまくいかなかったり…。 ということで、わたしはByte配列をシリアル化して保存する場合、BitConverterを利用していま…

LinqでXMLデータからいろいろ取得

C#

XMLデータを扱う場合にXMLTextReaderを使用してごにょごにょしていたのですが、どうにもすっきりしませんでした。ちょっとプログラミングC# 第6版をめくってみるとどうやらLinqでXMLを操作できるらしいということでしたので早速試してみました。 試してみた…

byte配列をごにょごにょと…

C#

Byte配列を文字列へ変換し、文字列からByte配列へ戻す方法のメモ。@ITのこちらを参考にしました。 [sourcecode language="csharp"] private static void Main(string[] args) { byte[] orgByteArray = { 0, 1, 2, 10, 11, 12, (byte) 'a', (byte) 'b' }; // …

プログラミングC# 第6版

C#

このところRubyばかりでしたが、まだまだ仕事では.NETを利用します。ここ半年ほどはほとんど.NETの技術はキャッチアップしていなかったのでそろそろ置いてけぼり感を感じてきたのでスキルのキャッチアップを行おうと思います。 先日のエントリーではEntityFr…

EntityFramework4.1 コードファースト

久しぶりに自宅でVisual Studioを起動しました。 WEB+DB Vol.66の「いまどきの.NET開発 第4回」に記載のあったEntityFramework4.1 コードファースト を少し試してみました。ちょうど1年ほど前に簡単なプログラムを作ろうと思ったときにもEntityFrameworkを利…

プログラムを書くときとHTMLを書くときの参考書籍の違い

私はごく平凡なプログラマで、どちらかというと人よりスキルが低い部類に入ると思います。そんな私は新しい言語を身につけるときには大体3セットの書籍を購入してきました。 通読できる書籍 参照できる書籍 中級者向けの書籍 通読できる書籍とは、C#であれば…

Microsoftキーボード

最近MSネタが続きますね。まぁもともとAndroid界隈より.NET界隈に生息していたのでこっちの方が居心地が良いのですが。 これまではエルゴノミックキーボードを使用していたのですが、我が家の省エネ計画の一環からパソコンごと移住して小さな机になりました…

.NETでアプリを実行しても起動しない場合はイベントログを確認 その2

先日のエントリですが、原因がわかりました。参照先で使用しているDLLではLOG4NETを使用しているのですが、このLOG4NETがなぜかGACに登録されたものを参照していました。その結果、テスト環境で実行しようとしてもGACに登録されたLOG4NETアセンブリが存在し…

.NETでアプリを実行しても起動しない場合はイベントログを確認

今直面している問題が、.NETで開発したアプリをテスト機など開発環境以外へ持って行った場合に初期画面さえ表示されず実行もされないという問題です。この手の話は、だいたい使用しているアプリのライセンスや参照しているDLLが参照できないためにコンストラ…

SQLiteって同時接続できない

当たり前のことなのですが、気付かずにいました。C#とPostgresで作成したシステムをSQLiteへ載せ替え中に、データベース周りのテストにあるMS-DTCで "The database file is locked"というエラーにぶつかりいろいろい調べて初めて気づきましたよ。 主に調べた…

System.Resources.MissingManifestResourceException

つい先日まで何事もなかく動作していたプログラムが、ある日突然動かなくなることがあります。もちろんデジタルな世界のことですから、突然動かなくなるには動かなくなるなりの要因があるわけです。ちょうどそんな状況に遭遇しました。 一昨日までグリーンバ…

System.Resources.MissingManifestResourceException

つい先日まで何事もなかく動作していたプログラムが、ある日突然動かなくなることがあります。もちろんデジタルな世界のことですから、突然動かなくなるには動かなくなるなりの要因があるわけです。ちょうどそんな状況に遭遇しました。 一昨日までグリーンバ…

MSTestでのタイムアウト設定(続き)

C#

前回のエントリーでMSTestのタイムアウト設定をメソッド単位で設定する方法を書きましたが、テストプロジェクト全体でタイムアウト時間を設定することができる要です。 具体的には、次の通りです。 上記の通りソリューションに作成されるSolution Itemsフォ…

MSTestでのタイムアウト時間を変更する

C#

UnitTestを書いていると、網羅性の観点から長時間のテストを行いたいことが出てくるとお思います。もちろん、テスト駆動開発の趣旨からするとリズムを壊してしまうため決して良いことではないのですが、まぁそういうこともあります。(たとえばIPアドレスを…

意味不明な実行時例外

C#でプログラムを書くときに、コンストラクタでは例外をスローしないように注意しています。たとえとば、ファイルのIOやデータベースの接続などはそれらのコンストラクタではしないようにしています。 ところが、今回作ったアプリケーションで開発環境以外で…

大量データを扱う難しさ

これまでも数千万レコードのデータを処理することは幾度かありましたが、大変苦労してきました。今回テストデータと言うことで、数百万件のデータをC#からDMLの発行で作成してみましたが、いろいろと問題が出てくるものです。 いわゆるバッチ処理の難しさに…

DataBindings[“Text”].WriteValue()

画面上のコントロールにDataBingindingsを使用して値をセットする方法について、なんだかしっくりこなかったので確認してみました。具体的には、WriteValue/ReadValueメソッドの動きを確認したかったのですが、結論としては、DataBingingsに設定するオブジェ…

BitmapファイルをBase64でエンコーディングする

C#

C#で画像ファイルをデータベースへ保存する場合、バックアップの利便性を考慮するとBlob形式で保存するよりも文字列として保存したい。たとえばPostgresではBlob型はテーブルの列に参照先の情報(ポインタ)が保存されるだけなので、データのバックアップ時に…

Form.Shownメソッド

起動時に画面を最小化してそのまま画面を閉じて処理を終了するアプリケーションを作成していたのですが、このときにForm.Shownメソッドを使用しました。 Form.Shownイベント Form.Shownメソッドは、フォームが表示される最初に一度だけ発火するイベントです…