- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-12-15T02:53:44+00:00","default:admin","admin")
#author("2018-01-17T01:59:42+00:00","default:admin","admin")
-[[.NET Coreで幾つかのデータベースアクセスを試してみる(SQL Server編):http://qiita.com/zaburo/items/0a215f4d9fad0aa0b8ef]]
-[[【ASP.NET Core入門記】データファーストでScaffoldする【MVC】:https://qiita.com/logikuma/items/a705e0d39bbe69550608]]
*アクセス方法 [#pf188336]
-ADO.NET .... 最も低レベルなAPIですが、高速
-Entity Framework ... いわゆるO/Rマッパで、高レベルなAPIだが、相対的に遅い
-Dapper ... Micro ORMと言われる部類のもので、中レベルなAPIだが、比較的高速(ADOに近い)
**速度比較 [#d5e97a38]
-[[Entity Framework Core 2.0 vs. Dapper performance benchmark, querying SQL Azure tables:https://koukia.ca/entity-framework-core-2-0-vs-dapper-net-performance-benchmark-querying-sql-azure-tables-7696e8e3ed28]]
-[[Entity Framework Core 2.0 vs. Dapper performance benchmark, querying SQL Azure tables:https://www.reddit.com/r/csharp/comments/6yhp84/entity_framework_core_20_vs_dapper_performance/]]
-[[Is Entity Framework Core 2.0 Faster?:https://dev.to/rickab10/is-entity-framework-core-20-faster]]
*[[Dapper:https://github.com/StackExchange/Dapper]] [#m3017d4d]
-[[Dapper Tutorials & Examples - C# Micro ORM:http://dapper-tutorial.net/]] <== まずはこれをしっかり読むこと
-[[Dapper With .Net Core:http://todothinkofname.net/2016/05/30/Dapper-with-Net-core/]]
-[[Use Dapper ORM With ASP.NET Core:http://www.talkingdotnet.com/use-dapper-orm-with-asp-net-core/]]
-[[【C#】Dapperについてまとめてみた:http://sweets-junkie.hatenablog.com/entry/2014/03/07/010004]]
-[[Dapperを触ってみた(導入、簡単な操作編)(Micro-ORM):http://j-levia.hatenablog.jp/entry/2017/04/17/213921]]
-[[DapperのQueryを使ってマルチマッピングしてみる:http://qiita.com/NetSeed/items/dda1096d03dfbf5fe431]]
-[[ASP.NET Core + Dapper で高パフォーマンスWEB開発を実践する:http://kikki.hatenablog.com/entry/2016/10/26/100604]]
-[[neue cc - Dapper関連:http://neue.cc/?s=Dapper]]
--[[neue cc - Micro-ORMとC#(とDapperカスタマイズ):http://neue.cc/2012/12/11_390.html]]
--[[neue cc - C#のO/Rマッパーのパフォーマンス測定 Part2:http://neue.cc/2012/01/17_363.html]]
-[[データ ポイント - Dapper、Entity Framework、およびハイブリッド アプリ:https://msdn.microsoft.com/ja-jp/magazine/mt703432.aspx]]
-[[Dapper - マイクロソフト系技術情報Wiki:https://techinfoofmicrosofttech.osscons.jp:443/index.php?Dapper]]
-[[Dapper .NET Tutorial:https://liangwu.wordpress.com/2012/08/16/dapper-net-samples/]]
-[[macでASP.NET MVC CoreとDapperを使ったウェブアプリを作る手順:https://blog.areare.net/archives/12988]]
**LINQ [#c73bc4b6]
-[[Dapper.Extensions.Linq:https://github.com/ryanwatson/Dapper.Extensions.Linq]]
-[[Dapper.Extensions.Linq/Dapper.Extensions.Linq.Test/:https://github.com/ryanwatson/Dapper.Extensions.Linq/tree/master/Dapper.Extensions.Linq.Test]]
---[[https://github.com/ryanwatson/Dapper.Extensions.Linq/blob/master/Dapper.Extensions.Linq.Test/Configuration/Container.cs]]
-[[Castle Windsor:http://d.hatena.ne.jp/Kazzz/20071020/p1]]
**Tips [#w0f0ed07]
***like 検索 [#f168345e]
-[[Does Dapper support the like operator?:https://stackoverflow.com/questions/6030099/does-dapper-support-the-like-operator]]
-普通にプリペアードステートメントで値をセットしようとするとできないので、SQL文にCONCAT関数を使う
string query = "SELECT * from country WHERE Name LIKE CONCAT('%',@name,'%');"
var results = connection.query<country>(query, new {name});
***IN句 [#t2e8743d]
-[[DapperはIN句も自動でマップしてくれるのが便利:http://kiyokura.hateblo.jp/entry/2013/12/03/084248]]
***マルチマッピング [#o00bce71]
-[[DapperのQueryを使ってマルチマッピングしてみる:https://qiita.com/NetSeed/items/dda1096d03dfbf5fe431]]
-[[DapperのQueryMutilpeを使って結合テーブルの分割マッピングをしてみる:https://qiita.com/NetSeed/items/7e0e25757080e0259416]]
**[[Dapper Plus:http://dapper-plus.net]] [#ib837496]
-有料ツール
*[[Entity Framework Core:https://docs.microsoft.com/en-us/ef/core/]] [#eae352fb]
-[[Entity Framework Core - IncludeとThenIncludeを試す:http://ichiroku11.hatenablog.jp/entry/2017/10/28/222855]]
-[[Entity Framework で複合主キーを設定する方法と Find の使い方:http://oki2a24.com/2016/07/13/use-composite-keys-and-find-method-in-entity-framework/]]
-[[Entity Framework Core 2.0の新機能:https://www.infoq.com/jp/news/2017/09/EF-Core-2.0-2]]
-[[Entity Framework Core 1.0 の基本的な使い方:https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10-part2/]]
-[[新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~:https://docs.com/decode2016/9570/dev-003-entity-framework-core-1-0]]
-[[「Entity Framework Coreを使ってみる」 公開用:https://www.slideshare.net/esmsec/entity-framework-core]]
-[[Entity Framework Core 1.0 で SQLite を使ってみる:http://gooner.hateblo.jp/entry/2016/03/04/071400]]
-[[データ ポイント - EF Core 1.1: お気に入りをいくつか:https://msdn.microsoft.com/ja-jp/magazine/mt745093.aspx]]
-[[.NET Core(Entity Framework Core)でCode Firstする:http://ryuichi111std.hatenablog.com/entry/2016/11/08/023809]]
-従来の Entity Framework と異なり、EF Core では O/R マッパーファイル(*.dbml)を使うことができない
-このため、O/R マッピング(データベーステーブルのどこを構造体クラスのどこにマッピングするのか?)はすべてコードで指定する必要がある
-ツールを利用して自動生成させることも(ある程度は)可能ですが、現時点(2016/07/02)では、手で書いてしまったほうがやりやすい
***Code First [#qc92d1d8]
-今後はこれが主流
-ソフトウェアを開発するにあたり、「リレーショナルデータベース設計ありき」ではなくて「作成するソフトウェアの”ドメイン領域の分析”に注力し、データベースはモデルのあるタイミングにおけるシリアライズ結果を保存する入れ物」的な考え方が基本となっている
-リレーショナルデータベースとドメインオブジェクトは、その概念の相違から「インピーダンス・ミスマッチ」が発生することは必然であり、ソフトウェア側の人間としては、ドメイン領域のオブジェクトモデリングに集中すべき、という思想
***Database First [#r9775169]
***Model First [#h8e57f6f]
***使い方 [#rf17b83d]
-以下のNuGetパッケージをインストール(DBにSQLiteを使う場合)
$ dotnet add package Microsoft.EntityFrameworkCore
$ dotnet add package Microsoft.EntityFrameworkCore.Tools
$ dotnet add package Microsoft.EntityFrameworkCore.Sqlite
$ dotnet add package Microsoft.EntityFrameworkCore.Sqlite.Design
-[プロジェクト名].csproj に以下を追記 &color(red){<= これをやらないと「dotnet ef」コマンドが使えない};
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
-プロジェクトフォルダにて以下を実行
$ dotnet restore
-DBスキーマ構築・更新
$ dotnet ef migrations add Initial
$ dotnet ef database update
--上記「Initial」の記述は何でもよい