Dapper.FastCrud.ModelGeneratorを利用することで、DapperおよびDapper.FastCrudから利用できるテーブルに対応するクラスを手軽に作成することができます。
Dapper.FastCRUD:ModelGeneratorを使う - nuits.jp blog
しかし標準のテンプレートではスキーマ名が指定されないため、デフォルトのスキーマ(SQL Server だと dbo)だけ利用している分には問題ないのですが、任意のスキーマを利用していた場合、自動生成されたコードでは実行時にエラーになります。
なおGistに、この問題とあわせて、数字始まりのカラムでコンパイルエラーになる問題にも対応したテンプレートを公開しています。こちらから GenericModelGenerator.tt と SampleModelGeneratorConfig.tt の二つのファイルをコピペすることで、対応することもできます。
Template for setting Schema name for Dapper.FastCrud.ModelGenerator · GitHub
あと良かったらこちらもどうぞ。
それではコード生成時に明示的にスキーマ名を指定するように、テンプレートを修正する方法を説明します。
1. 前提条件
- Dapper.FastCrud.ModelGenerator 2.4.1
2. GenericModelGenerator.ttを編集する
44行目あたりに、つぎのようなコードがあります。
/// <summary> /// A class which represents the <#=tbl.Name#> <#=(tbl.IsView)?"view":"table"#>. /// </summary> [Table("<#=tbl.Name#>")]
これを、つぎのように修正します。
/// <summary> /// A class which represents the <#=tbl.Name#> <#=(tbl.IsView)?"view":"table"#>. /// </summary> [Table("<#=tbl.Name#>", Schema = "<#=tbl.Schema#>")]
すると、生成されたコードが、つぎのようにスキーマ名が明示的に設定されるようになります。
/// <summary> /// A class which represents the EmployeePayHistory table. /// </summary> [Table("EmployeePayHistory", Schema = "HumanResources")] public partial class EmployeePayHistory { ...
以上です。