我强烈建议您使用T4模板,因为它会使流程更快,并添加其他功能.
最快的方法是打开"包管理器控制台"(工具>库包管理器>包管理器控制台),确保在"默认项目"下拉列表中选择了您的项目并运行:
PM>install-package petapoco
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为"Models"的文件夹和一个名为"Generated"的子文件夹.在"生成"文件夹中,打开"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 + '}'
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
PetaPoco有T4 Visual Studio模板,应该为你做这件事.如果您不希望将它们全部生成,只需使用该模板,然后从生成的*.cs文件中复制所需的类.
你会在PetaPoco的GitHub代码回购中找到模板.
向项目添加模板可以通过两种方式完成:
我建议使用第二个选项,因为您可以在生成之前将包设置为自动下载(不存在时)(CVS的一部分).