2009-07-28 73 views
0

我开始与SubSonic 3.0.0.3 - SimpleRepository交朋友。既然你/我必须创建每个对象类,所以我在下面做了一个简单的代码,只是为了节省一些时间。SubSonic 3.0.0.3 | SimpleRepository | DB DataType - 类DataType映射

我唯一的问题是,我的映射是否正确(DB DataType为.Net DataType)?

下面是简单的代码:

public string CreateClassEntity(string ConnectionSring, string TableName) 
     { 
      SqlDatabase db = new SqlDatabase(ConnectionSring); 

      string sqlCommand = "SELECT TOP 1 * FROM " + TableName + ""; 
      DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand); 

      DataSet subsonicDataSet = db.ExecuteDataSet(dbCommand); 

      DataTable subsonicDataTable = subsonicDataSet.Tables[0].Clone(); 
      string classEntity = "public class " + TableName + " \n{"; 
      foreach(DataColumn column in subsonicDataTable.Columns) 
      { 
       classEntity += "\n\tpublic "; 
       classEntity += column.DataType.ToString().Replace("System.", string.Empty) + " "; 
       classEntity += column.ColumnName + " "; 
       classEntity += "{ get; set; }"; 
      } 
      classEntity += "\n}"; 

      return classEntity; 
     } 

样品目标表(SQL 2008):

CREATE TABLE [kiss].[Users](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [UserName] [nvarchar](20) NOT NULL, 
    [UserPassword] [varbinary](128) NULL, 
    [UserTypeID] [tinyint] NOT NULL, 
    [ByPassAccessRestrictionsFlag] [bit] NOT NULL, 
    [IsEnforcePasswordPolicy] [bit] NOT NULL, 
    [PasswordExpirationDate] [datetime] NULL, 
    [IsPwdChangeNextLogin] [bit] NOT NULL, 
    [ShowLatestNewsFlag] [bit] NOT NULL, 
    [SortRowNumber] [int] NOT NULL, 
    [CreatedDate] [datetime] NOT NULL, 
    [CreatedBy] [nvarchar](20) NOT NULL, 
    [UpdatedDate] [datetime] NOT NULL, 
    [UpdatedBy] [nvarchar](20) NOT NULL, 
    [DeletedDate] [int] NULL, 
    [EntityTypeID] [int] NOT NULL 
    ) 

样例类输出:

public class Users 
{ 
    public Int32 ID { get; set; } 
    public String UserName { get; set; } 
    public Byte[] UserPassword { get; set; } 
    public Byte UserTypeID { get; set; } 
    public Boolean ByPassAccessRestrictionsFlag { get; set; } 
    public Boolean IsEnforcePasswordPolicy { get; set; } 
    public DateTime PasswordExpirationDate { get; set; } 
    public Boolean IsPwdChangeNextLogin { get; set; } 
    public Boolean ShowLatestNewsFlag { get; set; } 
    public Int32 SortRowNumber { get; set; } 
    public DateTime CreatedDate { get; set; } 
    public String CreatedBy { get; set; } 
    public DateTime UpdatedDate { get; set; } 
    public String UpdatedBy { get; set; } 
    public Int32 DeletedDate { get; set; } 
    public Int32 EntityTypeID { get; set; } 
} 
+0

它看起来像你试图复制由linq模板提供的代码生成。我不明白你为什么这样做? – 2009-07-28 08:18:24

+0

首先,我不知道,这是存在于linq模板,因为我从来没有成功运行它,并与ActiveRecords相同(拖动那些.TT文件)=(。这就是为什么我最终在SimpleRepository和强制手动创建一个类对象如果你可以帮我运行Linq模板和ActiveRecords,这将是很酷的 – 2009-07-28 08:52:44

+0

你有没有看过使用ActiveRecord的5分钟介绍http://subsonicproject.com/docs/The_5_Minute_Demo – 2009-07-28 09:18:52

回答