• SQL Server中数据类型对应C#中数据类型


    在SQL Server 2008中新建数据表的时候有33种数据类型可选,下面分别列举了这些类型对应的C#数据类型

    //------------------------------------------------------------------------------
    // .NET Framework 版本4.6目前不支持数据类型“hierarchyid”
    // .NET Framework 版本4.6目前不支持数据类型“sql_variant”
    // SQL Server限定同一张表中只能有一个时间戳(timestamp)列
    //------------------------------------------------------------------------------
    
    using System;
    using System.Collections.Generic;
    
    public partial class TypeTest
    {
        public Nullable<long> bigint_Null { get; set; }
        public long bigint { get; set; }
        public byte[] binary_Null { get; set; }
        public byte[] binary { get; set; }
        public Nullable<bool> bit_Null { get; set; }
        public bool bit { get; set; }
        public string char_Null { get; set; }
        public string @char { get; set; }
        public Nullable<System.DateTime> date_Null { get; set; }
        public System.DateTime date { get; set; }
        public Nullable<System.DateTime> datetime_Null { get; set; }
        public System.DateTime datetime { get; set; }
        public Nullable<System.DateTime> datetime2_Null { get; set; }
        public System.DateTime datetime2 { get; set; }
        public Nullable<System.DateTimeOffset> datetimeoffset_Null { get; set; }
        public System.DateTimeOffset datetimeoffset { get; set; }
        public Nullable<decimal> decimal_Null { get; set; }
        public decimal @decimal { get; set; }
        public Nullable<double> float_Null { get; set; }
        public double @float { get; set; }
        public System.Data.Spatial.DbGeography geography_Null { get; set; }
        public System.Data.Spatial.DbGeography geography { get; set; }
        public System.Data.Spatial.DbGeometry geometry_Null { get; set; }
        public System.Data.Spatial.DbGeometry geometry { get; set; }
        public byte[] image_Null { get; set; }
        public byte[] image { get; set; }
        public Nullable<int> int_Null { get; set; }
        public int @int { get; set; }
        public Nullable<decimal> money_Null { get; set; }
        public decimal money { get; set; }
        public string nchar_Null { get; set; }
        public string nchar { get; set; }
        public string ntext_Null { get; set; }
        public string ntext { get; set; }
        public Nullable<decimal> numeric_Null { get; set; }
        public decimal numeric { get; set; }
        public string nvarchar_Null { get; set; }
        public string nvarchar { get; set; }
        public Nullable<float> real_Null { get; set; }
        public float real { get; set; }
        public Nullable<System.DateTime> smalldatetime_Null { get; set; }
        public System.DateTime smalldatetime { get; set; }
        public Nullable<short> smallint_Null { get; set; }
        public short smallint { get; set; }
        public Nullable<decimal> smallmoney_Null { get; set; }
        public decimal smallmoney { get; set; }
        public string text_Null { get; set; }
        public string text { get; set; }
        public Nullable<System.TimeSpan> time_Null { get; set; }
        public System.TimeSpan time { get; set; }
        public byte[] timestamp_Null { get; set; }
        public Nullable<byte> tinyint_Null { get; set; }
        public byte tinyint { get; set; }
        public Nullable<System.Guid> uniqueidentifier_Null { get; set; }
        public System.Guid uniqueidentifier { get; set; }
        public byte[] varbinary_Null { get; set; }
        public byte[] varbinary { get; set; }
        public string varchar_Null { get; set; }
        public string varchar { get; set; }
        public string xml_Null { get; set; }
        public string xml { get; set; }
    }
    CREATE TABLE [dbo].[TypeTest](
        [bigint_Null] [bigint] NULL,
        [bigint] [bigint] NOT NULL,
        [binary_Null] [binary](50) NULL,
        [binary] [binary](50) NOT NULL,
        [bit_Null] [bit] NULL,
        [bit] [bit] NOT NULL,
        [char_Null] [char](10) NULL,
        [char] [char](10) NOT NULL,
        [date_Null] [date] NULL,
        [date] [date] NOT NULL,
        [datetime_Null] [datetime] NULL,
        [datetime] [datetime] NOT NULL,
        [datetime2_Null] [datetime2](7) NULL,
        [datetime2] [datetime2](7) NOT NULL,
        [datetimeoffset_Null] [datetimeoffset](7) NULL,
        [datetimeoffset] [datetimeoffset](7) NOT NULL,
        [decimal_Null] [decimal](18, 0) NULL,
        [decimal] [decimal](18, 0) NOT NULL,
        [float_Null] [float] NULL,
        [float] [float] NOT NULL,
        [geography_Null] [geography] NULL,
        [geography] [geography] NOT NULL,
        [geometry_Null] [geometry] NULL,
        [geometry] [geometry] NOT NULL,
        [hierarchyid_Null] [hierarchyid] NULL,
        [hierarchyid] [hierarchyid] NOT NULL,
        [image_Null] [image] NULL,
        [image] [image] NOT NULL,
        [int_Null] [int] NULL,
        [int] [int] NOT NULL,
        [money_Null] [money] NULL,
        [money] [money] NOT NULL,
        [nchar_Null] [nchar](10) NULL,
        [nchar] [nchar](10) NOT NULL,
        [ntext_Null] [ntext] NULL,
        [ntext] [ntext] NOT NULL,
        [numeric_Null] [numeric](18, 0) NULL,
        [numeric] [numeric](18, 0) NOT NULL,
        [nvarchar_Null] [nvarchar](max) NULL,
        [nvarchar] [nvarchar](max) NOT NULL,
        [real_Null] [real] NULL,
        [real] [real] NOT NULL,
        [smalldatetime_Null] [smalldatetime] NULL,
        [smalldatetime] [smalldatetime] NOT NULL,
        [smallint_Null] [smallint] NULL,
        [smallint] [smallint] NOT NULL,
        [smallmoney_Null] [smallmoney] NULL,
        [smallmoney] [smallmoney] NOT NULL,
        [sql_variant_Null] [sql_variant] NULL,
        [sql_variant] [sql_variant] NOT NULL,
        [text_Null] [text] NULL,
        [text] [text] NOT NULL,
        [time_Null] [time](7) NULL,
        [time] [time](7) NOT NULL,
        [timestamp_Null] [timestamp] NULL,
        [tinyint_Null] [tinyint] NULL,
        [tinyint] [tinyint] NOT NULL,
        [uniqueidentifier_Null] [uniqueidentifier] NULL,
        [uniqueidentifier] [uniqueidentifier] NOT NULL,
        [varbinary_Null] [varbinary](max) NULL,
        [varbinary] [varbinary](max) NOT NULL,
        [varchar_Null] [varchar](max) NULL,
        [varchar] [varchar](max) NOT NULL,
        [xml_Null] [xml] NULL,
        [xml] [xml] NOT NULL,
     CONSTRAINT [PK_TypeTest] PRIMARY KEY CLUSTERED 
    (
        [bigint] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    GO

     以下是用于生成实体类(C#)的SQL脚本:

    -- 表名
    DECLARE @TableName NVARCHAR(50)
    SET @TableName = 'SettlementStatistics'
    
    -- 用于控制生成的属于是否区分Null 
    -- 例:@IgnoreNull为TRUE时 public int Id { get; set; }
    -- 例:@IgnoreNull为False时 public int? Id { get; set; }
    DECLARE @IgnoreNull NVARCHAR(50)
    SET @IgnoreNull = 'FALSE' -- 'TRUE/FALSE'
    
    DECLARE @ObjectId BIGINT
    SET @ObjectId = OBJECT_ID(@TableName,N'U')
    
    IF OBJECT_ID(N'Tempdb..#Model',N'U') IS NOT NULL
    DROP TABLE #Model
    CREATE TABLE #Model(Field NVARCHAR(200))
    
    DECLARE @MaxColumnIndex INT
    SELECT @MaxColumnIndex = Max(column_id) FROM sys.columns WHERE object_id = @ObjectId
    
    DECLARE @Index INT = 1
    
    WHILE @Index <= @MaxColumnIndex
    BEGIN
        INSERT INTO #Model(Field) VALUES('/// <summary>')
        
        IF EXISTS(SELECT * FROM sys.extended_properties WHERE major_id = @ObjectId AND minor_id = @Index)
        BEGIN
            INSERT INTO #Model(Field)
            SELECT '/// ' + CONVERT(NVARCHAR(200),value) FROM sys.extended_properties WHERE major_id = @ObjectId AND minor_id = @Index
        END
        ELSE
        BEGIN
            INSERT INTO #Model(Field) VALUES('///')
        END
        
        INSERT INTO #Model(Field) VALUES('/// </summary>')
        
        INSERT INTO #Model(Field)
        SELECT 'public ' + (CASE [Types].name 
                            WHEN 'image'            THEN 'byte[]'
                            WHEN 'text'             THEN 'string'
                            WHEN 'uniqueidentifier' THEN 'Guid'
                            WHEN 'date'             THEN 'DateTime'
                            WHEN 'time'             THEN 'TimeSpan'
                            WHEN 'datetime2'        THEN 'DateTime'
                            WHEN 'datetimeoffset'   THEN 'DateTimeOffset'
                            WHEN 'tinyint'          THEN 'byte'
                            WHEN 'smallint'         THEN 'short'
                            WHEN 'int'              THEN 'int'
                            WHEN 'smalldatetime'    THEN 'DateTime'
                            WHEN 'real'             THEN 'float'
                            WHEN 'money'            THEN 'decimal'
                            WHEN 'datetime'         THEN 'DateTime'
                            WHEN 'float'            THEN 'double'
                            WHEN 'ntext'            THEN 'string'
                            WHEN 'bit'              THEN 'bool'
                            WHEN 'decimal'          THEN 'decimal'
                            WHEN 'numeric'          THEN 'decimal'
                            WHEN 'smallmoney'       THEN 'decimal'
                            WHEN 'bigint'           THEN 'long'
                            WHEN 'geometry'         THEN 'System.Data.Spatial.DbGeometry'
                            WHEN 'geography'        THEN 'System.Data.Spatial.DbGeography'
                            WHEN 'varbinary'        THEN 'byte[]'
                            WHEN 'varchar'          THEN 'string'
                            WHEN 'binary'           THEN 'byte[]'
                            WHEN 'char'             THEN 'string'
                            WHEN 'timestamp'        THEN 'byte[]'
                            WHEN 'nvarchar'         THEN 'string'
                            WHEN 'nchar'            THEN 'string'
                            WHEN 'xml'              THEN 'string'                        
                            ELSE 'string' END)
               + (CASE WHEN 'FALSE'=@IgnoreNull AND [Columns].is_nullable=1 
                  AND ',bigint,bit,date,datetime,datetime2,datetimeoffset,decimal,float,int,money,numeric,real,smalldatetime,smallint,smallmoney,time,tinyint,uniqueidentifier,' LIKE '%,'+[Types].name+',%' 
                  THEN '?' ELSE '' END)
               + ' ' + [Columns].name + ' { get; set; }'    
        FROM sys.columns AS [Columns] 
        INNER JOIN sys.types AS [Types] ON [Columns].user_type_id = [Types].user_type_id
        WHERE  [Columns].object_id = @ObjectId AND [Columns].column_id = @Index
    
        IF @Index < @MaxColumnIndex INSERT INTO #Model(Field) VALUES('')
        
        SET @Index = @Index + 1
    END
    
    SELECT * FROM #Model
    DROP TABLE #Model
  • 相关阅读:
    U盘量产体验
    syn/ack攻击
    [转]Moment of inertia of a uniform hollow cylinder
    [转]从技术角度分析星际2
    [转]SCI绝不能抄袭别人的工作
    利用代数方法进行相交检测
    【原创】凝思磐石Linux操作系统,X桌面打开方法
    【原创】Oracle数据库逻辑迁移步骤
    【原创】sybase IQ数据库启动参数——START_ASIQ参数列表
    【原创】ORACLE数据库管理方法学习总结
  • 原文地址:https://www.cnblogs.com/Continue/p/6645868.html
Copyright © 2020-2023  润新知