私はゲッターとセッターでモデルクラスを作成したいデータベースをデータベースに持っています。私のプロジェクトのタスクのほとんどは、私はPetaPocoを使用しています。手動でモデルを作成しましたが、多くの表には多くの列があります。PetaPocoライブラリを使用してデータベースからモデルを自動的に作成する方法は?
PetaPocoを使用してデータベースからモデルを作成する方法はありますか?
私はゲッターとセッターでモデルクラスを作成したいデータベースをデータベースに持っています。私のプロジェクトのタスクのほとんどは、私はPetaPocoを使用しています。手動でモデルを作成しましたが、多くの表には多くの列があります。PetaPocoライブラリを使用してデータベースからモデルを自動的に作成する方法は?
PetaPocoを使用してデータベースからモデルを作成する方法はありますか?
PetaPocoには、これを行うT4 Visual Studioテンプレートがあります。それらをすべて生成したくない場合は、テンプレートを使用して、結果として得られる* .csファイルからクラスをコピーしてください。
PetaPoco's GitHub code repoにテンプレートがあります。プロジェクトにテンプレートを追加する
は、2つの方法で行うことができます
パッケージが存在しない場合(CVSの一部)に自動ダウンロードするように設定できるので、2番目のオプションをお勧めします。
私はDALを生成したDatabase.ttを使用しました。そのリストから、テーブル用のクラスを作成するために使用するのはどれですか? – RKh
@RPK:そのリストから何を意味するのですか?どのようなリスト?デフォルトでは、データベースクラスとスキーマクラスが生成されます。私の知る限り。手動のPOCOを自分で作成しますが、テンプレートをすばやく見ることで、テーブルクラスを生成し、生成された 'Database.cs'ファイルに格納する必要があります。 –
リストでは、あなたが私に与えたリンクに表示されている.ttを意味します。手動でPOCOを書くこともできますが、T4を使って追加したいと思います。どのT4テンプレートを実行するのですか?既存のPOCOを妨害しますか? – RKh
T4テンプレートを使用することを強くお勧めします.T4テンプレートを使用すると、処理が大幅に高速化され、機能が追加されるようになります。
PM>install-package petapoco
:
最速の方法は、「パッケージマネージャコンソール」([ツール]> [ライブラリパッケージマネージャ]> [パッケージマネージャコンソール)を開き、プロジェクトをドロップダウンして実行し、「デフォルトのプロジェクト」で選択されていることを確認することです
"Models"というフォルダと "Generated"というサブフォルダが作成されます。 「Generated」フォルダで、「Database.tt」ファイルを開き、情報を設定します。これを設定する方法については、http://www.toptensoftware.com/petapoco/を参照してください。
T4テンプレートを正常にセットアップすると、データベース内のすべてのオブジェクトを含む "Database.cs"というコードファイルが生成されます。生成されるのは「部分クラス」です。ここの鍵はです。このファイル内のオブジェクトは変更しないでください。代わりに、新しい部分クラスを同じ名前空間に作成し、より多くのロジックを実装することができます。既存のオブジェクトを移動/更新して、新しい設定を確認します。
もう1つのオプションは、いくつかのコードを生成するためにTSQLを作成することです。ここでは非常に粗い私は過去に私のPetaPocoテーブル用のインターフェースを生成するために使ったことの例です。
declare @script nvarchar(max);
declare @table nvarchar(256);
set @table = 'YourTableName'
set @script = 'public interface I' + @table + '{' + char(10);
SELECT
@script = @script +
CASE
WHEN st.Name IN ('int') AND c.is_nullable = 0 THEN 'int'
WHEN st.name in ('smallint') AND c.is_nullable = 0 THEN 'short'
WHEN st.name IN ('bigint') AND c.is_nullable = 0 THEN 'long'
WHEN st.name IN ('varchar','nvarchar','sysname') THEN 'string'
WHEN st.Name IN ('datetime') AND c.is_nullable = 0 THEN 'DateTime'
WHEN st.Name IN ('bit') AND c.is_nullable = 0 THEN 'bool'
WHEN st.Name IN ('decimal') AND c.is_nullable = 0 THEN 'decimal'
/* NULLABLE VALUES */
WHEN st.Name IN ('int') AND c.is_nullable = 1 THEN 'int?'
WHEN st.name in ('smallint') AND c.is_nullable = 1 THEN 'short?'
WHEN st.name IN ('bigint') AND c.is_nullable = 1 THEN 'long?'
WHEN st.name IN ('varchar','nvarchar','sysname') AND c.is_nullable = 1 THEN 'string?'
WHEN st.Name IN ('datetime') AND c.is_nullable = 1 THEN 'DateTime?'
WHEN st.Name IN ('bit') AND c.is_nullable = 1 THEN 'bool?'
WHEN st.Name IN ('decimal') AND c.is_nullable = 1 THEN 'decimal?'
--WHEN st.name IN('sysname') AND c.is_nullable = 1 THEN 'string?'
ELSE 'UNKOWN-' + st.name
END
+ ' ' + c.name + '{get;set;}' + char(10)
FROM sys.tables t
INNER JOIN sys.columns c
ON t.object_id = c.object_id
INNER JOIN sys.types st
ON st.system_type_id = c.system_type_id
WHERE t.name = @table
print @script + '}'
これが役立ちます。
Visual Studioでは、統合エンティティフレームワークの「データベースからコードを最初に作成」機能を使用して、PetaPocoで使用するPOCOクラスを生成できます。それらを生成し、DBContextや属性のような不要なEFゴミをすべて削除してください。こうすることで、C#だけでなく、VB.NETとそのすべての視覚的なクリックでも、P4Oを生成することができます.T4テンプレートを使用しないでください。
プロジェクト/新規アイテムの追加... /データ/ ADO。NETエンティティデータモデル/コードデータベースから最初
t4テンプレートからペタポコはできません? – wiero