linq .dbml转化成sql脚本

public String ConvertDBMLToSqlScript(System.Data.Linq.DataContext DBContext)  
{   
      String DBContextNamespace = DBContext.GetType().Namespace;   
      StringBuilder sqlScriptCollection = new StringBuilder();   

      String[] DotNeedArr = new String[]    
     {    
       "Connection","Transaction","CommandTimeout",   
       "Log", "ObjectTrackingEnabled","DeferredLoadingEnabled",   
       "Mapping","LoadOptions","ChangeConflicts"  
     };   
     foreach (PropertyInfo p in DBContext.GetType().GetProperties())   
     {   
         if (DotNeedArr.Contains(p.Name)) continue;   
         string sqlScript = "create table "+p.Name+" (";      
         Type type = Type.GetType(DBContextNamespace+"." + p.Name);        
         foreach (System.Reflection.PropertyInfo mInfo in type.GetProperties())   
         {   
              foreach (Attribute attr in Attribute.GetCustomAttributes(mInfo))   
              {   
                   if (attr.GetType() == typeof(ColumnAttribute))   
                   {   
                       ColumnAttribute ColumnAttr = attr as ColumnAttribute;                 
                       sqlScript += "[" + mInfo.Name + "] ";   
                       if (ColumnAttr.DbType.Contains("NULL")) 

                           sqlScript+=ColumnAttr.DbType;              

                       else

                           sqlScript+=ColumnAttr.DbType+" null ";             
                       if (ColumnAttr.IsPrimaryKey)

                       { 

                            sqlScript += " primary key ";

                       }                       
                     sqlScript += ",";   
                  }   
             }   
       }                   
       sqlScript = sqlScript.Substring(0, sqlScript.Length - 1);   
       sqlScript += ")";   
       sqlScriptCollection.AppendLine(sqlScript);   
    }   
    return sqlScriptCollection.ToString();   
}

DataClasses1DataContext DBContext = new DataClasses1DataContext();   

String resultSql = ConvertDBMLToSqlScript(DBContext);  

 

posted @ 2015-01-18 09:42  web王  阅读(227)  评论(0编辑  收藏  举报