.NET Core でMySQLに接続する
.NET Core にてMySQLに接続したくてその方法を調べてみた。
参考にした記事の手順でできるけど、1点か注意が必要な部分があった。
注意点
portが 3305
になっている
参考
HowTo: Starting with MySQL EF Core provider and Connector/Net 7.0.4 | InsideMySQL.com
.NET Core開発で手動でのnuget追加方法
.NET Core を使った開発でVisualStudioを使えない場合Nugetを調べるのが大変だと思います。
MacだとRiderがあるからNugetの参照も上手くいくと思ってたんですが、自分の環境だと、RiderでNugetを検索できるけど参照追加しようとすると失敗してしまうという状態でした。 GUIからできないなら自力で書くしかないということで調べてみると自分が探していた情報が出てきました。
- .NET Core で使いたいClassをココで調べる。
docs.microsoft.com - 1.で調べた Assembly を元にNugetを検索する。
NuGet Gallery | Home - csproj にパッケージ名とバージョンを追記する
※ 詳細は下記参考ページに載っています。
参考
VisualStudio2015Enterpriseでパッケージが読み込まれない
Visual Studio 2015 Enterprise をインストールして、プロジェクトを作成した時に下記のエラーが表示されました。
'XamarinShellPackage' パッケージは正しく読み込まれませんでした。
参考のURLを見てみると、 http://xvs.xamarin.com/Xamarin.VisualStudio_3.11.524.msi をインストールすると解決すると書いてあったので試してみたところ無事解決しました。
参考
async function でfetchをラップする関数を作る
javascriptで async function の使い方を勘違いしていたようなのでメモ。
先に正しく動く例
export class ApiWrapper { public async getResult = (searchText: string) => { let myHeaders = new Headers({ 'Token': '' }); const response = fetch(this.apiUrl + searchText, { method: 'GET', headers: myHeaders, mode: 'cors', credentials: 'include' }); if (response.status >= 200 && response.status < 300) { let data = await response.json(); return data; } else { var error = new Error(response.statusText); throw error } } }
呼び出し側
let hoge = async () => { const apiWrapper = new ApiWrapper(); const fuga = await apiWrapper.getResult('検索したいワード'); console.log(fuga); }
何を勘違いしていたのか
functionの前に async を付けて、戻り値は Promiseにすればいいと思っていた。
export class ApiWrapper { // タグ一覧取得 public async getResult = (searchText: string) => { let myHeaders = new Headers({ 'Token': '' }); return fetch(this.apiUrl + searchText, { method: 'GET', headers: myHeaders, mode: 'cors', credentials: 'include' }).then( (response) => { if (response.status >= 200 && response.status < 300) { return response.json(); } else { var error = new Error(response.statusText); throw error } }).then( (data: any) => { console.log('success'); return data; }).catch( (error) => { console.log('request failed', error); throw error; }); } }
と書いて、Promiseを返してあげればいいのではと思ってましたが、この場合、呼び出し側では下の様に書かなければいけなくて冗長だなと思ってました。
let hoge = async () => { const apiWrapper = new ApiWrapper(); apiWrapper.getTagList('tag name') .then( (response) => { console.log(response); }) .catch( (error) => { console.log(error); }); }
でもこれは勘違いで、 ApiWrapper は Promise を返す Promise になっていただけでした。
これは、 c# だと Task<Task<T>>
になっている、と言われてなるほどと思いました。
.NET Core の開発環境
気づけば、 .NET Core の開発環境を作る方法やIDEなどが充実してました。
開発環境構築
こちらの手順に従って簡単にインストールできるようになっています。
.NET - Powerful Open Source Development
でのインストール方法について書かれています。
IDE
Windowsの場合は、VIsual Studio を使えば良いと思います。
今まで Mac だと、 Visual Studio Code や Vim, Emacs といったエディタを使っての開発でした。
ですが、最近ではMacでも利用可能なIDEがでてきたようです。
Rider
JETBRAIN社製の .NET IDE
A cross-platform .NET IDE based on the IntelliJ platform and ReSharper
slnファイルの記述
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013
Visual Studio for Mac
Visual Studio のMac版
現在は PREVIEW版です。
www.visualstudio.com
slnファイルの記述
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012
※ この2つのIDE両方とも開発することはできそうですが、slnファイルを見るとコメント部分の Visual Studio のバージョンが違うようでした。