{"action":"created","issue":{"url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/1","labels_url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/1/comments","events_url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/1/events","html_url":"https://github.com/SunriseDigital/cs-sdx/pull/1","id":90595464,"number":1,"title":"Sdx.Db.Where","user":{"login":"gomo","id":639604,"avatar_url":"https://avatars.githubusercontent.com/u/639604?v=3","gravatar_id":"","url":"https://api.github.com/users/gomo","html_url":"https://github.com/gomo","followers_url":"https://api.github.com/users/gomo/followers","following_url":"https://api.github.com/users/gomo/following{/other_user}","gists_url":"https://api.github.com/users/gomo/gists{/gist_id}","starred_url":"https://api.github.com/users/gomo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gomo/subscriptions","organizations_url":"https://api.github.com/users/gomo/orgs","repos_url":"https://api.github.com/users/gomo/repos","events_url":"https://api.github.com/users/gomo/events{/privacy}","received_events_url":"https://api.github.com/users/gomo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-06-24T07:36:42Z","updated_at":"2015-06-26T01:02:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/SunriseDigital/cs-sdx/pulls/1","html_url":"https://github.com/SunriseDigital/cs-sdx/pull/1","diff_url":"https://github.com/SunriseDigital/cs-sdx/pull/1.diff","patch_url":"https://github.com/SunriseDigital/cs-sdx/pull/1.patch"},"body":"## 概要\r\n\r\nWhere句のみを生成するクラスを作成します。Whereのみを取り出した理由は２つ。\r\n\r\n* UPDATE文のWHEREにも使い回したい。もしかしたらJOINのONにも使えるかも（だとするとWhereじゃないほうがいいのかな？）。\r\n* ORを含むような複雑なカッコを要するWHERE句を`where->add(anotherWhere)`みたいに生成できたら便利そう\r\n\r\nちなみに、２番めはSDXの時に色々試してて、思いついてはいたのですが、まだ作成してません。\r\n\r\n## テストについて\r\n\r\n現状travisがSQLサーバーのテストに対応していないようです。\r\nhttp://docs.travis-ci.com/user/database-setup/\r\n\r\nなのでユニットテストはMSTestを使うようにしました。理由はVisualStudioとの相性が素晴らしく、扱いやすいからです。Xunitに書ける部分は極力そちらに書いていきます。\r\n\r\nテストは移行しやすいようにAssertはXunitのものを使用します。また、Xunitは`[Fact]`というメソッドアトリビュートでテストメソッドを識別しますが、MSTestの`[TestMethod]`に置き換えます。\r\n\r\n```c#\r\nusing Assert = Xunit.Assert;\r\nusing FactAttribute = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;\r\n```"},"comment":{"url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/comments/115449516","html_url":"https://github.com/SunriseDigital/cs-sdx/pull/1#issuecomment-115449516","issue_url":"https://api.github.com/repos/SunriseDigital/cs-sdx/issues/1","id":115449516,"user":{"login":"gomo","id":639604,"avatar_url":"https://avatars.githubusercontent.com/u/639604?v=3","gravatar_id":"","url":"https://api.github.com/users/gomo","html_url":"https://github.com/gomo","followers_url":"https://api.github.com/users/gomo/followers","following_url":"https://api.github.com/users/gomo/following{/other_user}","gists_url":"https://api.github.com/users/gomo/gists{/gist_id}","starred_url":"https://api.github.com/users/gomo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gomo/subscriptions","organizations_url":"https://api.github.com/users/gomo/orgs","repos_url":"https://api.github.com/users/gomo/repos","events_url":"https://api.github.com/users/gomo/events{/privacy}","received_events_url":"https://api.github.com/users/gomo/received_events","type":"User","site_admin":false},"created_at":"2015-06-26T01:02:28Z","updated_at":"2015-06-26T01:02:28Z","body":"## mysqlで接続する\r\n\r\nDBの接続を変えても同じように使えないと意味が無いので試してみた。\r\n\r\n`System.Data.SQLClient`という名前空間に`SqlConnector`とか`SqlCommand`というDb関連のクラスがあるが、これは全部SQLサーバー専用のクラスだった。DB関連のクラスに上位の抽象クラスがあるのは、考えればあたりまえだが、`Sql`という名前につられて抽象的なクラスを使ってる気分になっていた。\r\n\r\n抽象レイヤーは`System.Data.Common`に`Db`という接頭辞で同じようなクラスが存在していて、MySQL関連も皆そちらを継承している。\r\n\r\nMySQLのドライバーは.NETには含まれていない。travisでのテストもそうだが、コマンド一つで状況を復元することを考えると`nuget`経由で入れるのがいいと思われる。\r\n\r\nnugetパッケージマネージャーを開いて、インストールしたいプロジェクトを選択し、下記コマンドを実行。\r\n\r\n```\r\nInstall-Package MySql.Data\r\n```\r\n\r\nnugetのパッケージ群はここで探せます。\r\n\r\nhttps://www.nuget.org/\r\n\r\n\r\n\r\n"}}