プロジェクト情報・進め方
- .NET Framework 4.6.1
- Visual C#
- ASP.NET Web アプリケーション
- MVC 5
- 認証なし
- Homecontroller の Index アクション、ビューを修正していく
- SMTP サーバには Hotmail を利用した。Google アカウントは2段階認証や、アプリケーションパスワードなど、面倒事が多いため。
エラー
選択したコードジェネレータを実行中にエラーが発生しました : ‘Key already exists in table.’
2016年8月18日11時12分追記: ソリューション全体をアップロードしました。
Identity をカスタマイズした独自の認証を持ったサンプルのアプリを作ってみました。Identity の拡張方法の習得を目標に、それ以外はシンプルに、あまりこだわらないようしております。
Visual Studio 2015 でプロジェクトを作成するときに認証処理を追加するように選択することができます。そうしますと、Identity を使用した認証ロジックと、ユーザーやロールを管理するデータベーステーブルが予め作られます。
このファイルやコードが大変参考になります。
そこで、ファイルの構成はプロジェクト生成時に自動作成される認証のあり方に近づけます。
コードの振る舞いや、内容の理解、実際に書くコードの内容は、参考ウェブページをお手本にいたします。
[Index(IsUnique=true)]
という Annotation 属性をプロパティに付けることでそのカラムは一意となる。public class Sex { public int Id { get; set; } [Required] [Index(IsUnique=true)] [MaxLength(10)] public string Name { get; set; } }
にて DB データをエクスポートする機能を紹介いたしました。
今回は、対となるインポート機能を開発いたします♪
こちらのシステムでインポート機能を考えます。ポイントは次の 2 点です。
Parent 1-n Child という関係を持っております。
ですのでシステム上は、Parent は必ず 1 つですけれども、それに紐づく Child はいくつあっても問題ありません。
ですけれども、インポート機能におきましては子どもの数の最大数を制限しませんと CSV ファイルの仕様を固めることが難しくなります。
したがいまして、今回は Child の数を最大 2 つとし、それ以上登録したい場合はウェブブラウザから追加する、という運用方法を想定いたしました。
に沿ってサンプルプロジェクトを作成したところからスタートです。
ソリューションおよびプロジェクト名は Sample3 といたしました。
の CreateCsv メソッドが次のように書けますわね♪
var sb = new StringBuilder(); sb.Append(GetCsvHeader()).Append(NEWLINE_CHARACTER); parentList.ForEach(p => sb.Append(CreateCsvLine(p)).Append(NEWLINE_CHARACTER)); return sb.ToString();
↓
var sb = new StringBuilder(); sb.AppendLine(GetCsvHeader()); parentList.ForEach(p => sb.AppendLine(CreateCsvLine(p))); return sb.ToString();
追記: インポート版も作りましたの♪
DB のデータを CSV に出力してウェブブラウザからダウンロードしたいですの!今回、それを実現するコードを残しておきますわ♪
「1 行に Parent とその Child を 2 人分まで出力」いたしますので、子供が 0 人の場合は子どもの部分が空白となりますし、1 人の場合は 1 人分のみ埋まります。Child が 3 人の場合は、2 人分のみ CSV に書き込まれ、3 人目は記録されない点に注意ですの!
2016年8月16日追記: 本投稿のコードをアップいたしました。
追記: 【ASP.NET】【MVC5】お試しウェブアプリチュートリアルのエラーを解決 – oki2a24 で説明した通り、エラーを回避するために手順を一部変更しております。
それでは実際に作っていきましょう♪
ログのライブラリを使う理由は、次の2つです。
log4net と NLog の2種類がメジャーなようです。
今回は、歴史とノウハウが大きいという理由で log4net を採用いたしました。
では早速導入手順を残してまいります。2種類のやり方を解説いたします。
どちらもASP.NET MVC5 プロジェクトを作成し、アクティブになっている状態からスタートです♪