我在我的数据库中的表,我想创建一个getter和setter模型类。 对于我的项目大部分任务,我使用PetaPoco。 我创建的模型手动,但很少表有很多列。
有什么办法来创建使用PetaPoco数据库的模型?
我在我的数据库中的表,我想创建一个getter和setter模型类。 对于我的项目大部分任务,我使用PetaPoco。 我创建的模型手动,但很少表有很多列。
有什么办法来创建使用PetaPoco数据库的模型?
PetaPoco有T4的Visual Studio模板应该为你做这个。 如果你不想让他们所有生成的,只是使用的模板,然后复制这些类从要生成的* cs文件。
你会发现模板PetaPoco的GitHub的代码回购 。
添加模板到您的项目可以通过两种方式来完成:
我会建议第二个选项,因为你可以建立之前设置你的包来自动下载时不存在(你的CVS的一部分)。
我强烈建议你使用T4模板,因为它会使进程要快得多,也可以添加额外的功能。
最快的方法是打开“包管理器控制台”(工具>库包管理器>包管理器控制台),请确保您的项目在“默认项目”下拉菜单并选择运行:
PM>install-package petapoco
这将创建一个名为“模型”文件夹,名为“生成”子文件夹。 在“生成”文件夹中,打开“Database.tt”文件和设置信息。 请参阅http://www.toptensoftware.com/petapoco/有关设置此功能的信息。
一旦你成功地建立了T4模板,它会生成一个名为“Database.cs”与数据库中的所有对象的代码文件。 什么是生成的“局部类”。 这里的关键是, 你不应该修改任何物体在这个文件中。 相反,您将创建在同一个名字 ,然后就可以实现更多的逻辑到一个新的部分类。 移动/更新现有的对象,以满足新的设置。
另一种选择是创建一些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中,可以使用集成的实体框架的“代码首先从数据库”功能来生成POCO类与PetaPoco使用。 刚生成它们,并删除所有不必要的EF垃圾一样的DbContext和属性。 这样一来,就可以生成波苏斯不仅为C#,同时也为VB.NET和其所有的视觉点击,用T4模板无需复杂。
项目/添加新项... /数据/ ADO.NET实体数据模型/代码首先从数据库