一、SubSonic简单介绍

SubSonic是一个类似Rails的开源.NET项目。你可以把它看作是一把瑞士军刀,它可以用来构建Website和通过ORM方式来访问数据。Rob Conery和Eric Kemp是推动SubSonic的主要开发人员,与项目良好的发展有着密切的关系。是一个优秀的、开源的ORM映射框架。

另外官方有提供符合自身需要的代码生成器sonic.exe,但是笔者在SubSonic并未下载到类代码生成器,而是按照SubSonic的映射规则,在之前的用过的SubSonic的类上面做的修改,为下文的demo所使用,如果哪位朋友有SubSonic代码生成器连接,欢迎共享一下给大家。

 

 二、SubSonic使用步骤

1、新增SubSonic配置文件并引入SubSonic.dll

.NET 常用ORM之SubSonic

配置文件并不多,有三处分别加入到web.config

<configSections>    
    <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" allowDefinition="MachineToApplication" restartOnExternalChanges="true" requirePermission="false"/>
  </configSections>

 

 <connectionStrings>
    <add name ="SubSonicConn" connectionString="Data Source=.;Initial Catalog=Test;Integrated Security=true;uid=sa;password=XXXXXX;"/>
  </connectionStrings>

  

<SubSonicService defaultProvider="SubSonicConn" enableTrace="false" templateDirectory="">
    <providers>
      <clear/>
      <add name="SubSonicConn" type="SubSonic.SqlDataProvider, SubSonic"
           connectionStringName="SubSonicConn" generatedNamespace="SubSonicConn" removeUnderscores="false" />
    </providers>
  </SubSonicService>

  配置文件就这样,注意数据连接串的name值,包括后面项目中映射类文件的name值,一定要保持一致。

2、项目下新建Generated文件夹,保存SubSonic所需的类映射文件

.NET 常用ORM之SubSonic

其中Rolexxx相关为Role表的使用类,AllStructs.cs为主要的控制器文件,StoredProcedures.cs为存储过程相关的类。具体类代码如下:

using System; 
using System.Text; 
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration; 
using System.Xml; 
using System.Xml.Serialization;
using SubSonic; 
using SubSonic.Utilities;
// <auto-generated />
namespace ORMSubSonic.Generated
{
    #region Tables Struct
    public partial struct Tables
    {
        
        public static readonly string Boy = @"boy";
        
    }
    #endregion
    #region Schemas
    public partial class Schemas {
        
        public static TableSchema.Table Boy
        {
            get { return DataService.GetSchema("boy", "SubSonicConn"); }
        }
        
    
    }
    #endregion
    #region View Struct
    public partial struct Views 
    {
        
    }
    #endregion
    
    #region Query Factories
    public static partial class DB
    {
        public static DataProvider _provider = DataService.Providers["SubSonicConn"];
        static ISubSonicRepository _repository;
        public static ISubSonicRepository Repository 
        {
            get 
            {
                if (_repository == null)
                    return new SubSonicRepository(_provider);
                return _repository; 
            }
            set { _repository = value; }
        }
        public static Select SelectAllColumnsFrom<T>() where T : RecordBase<T>, new()
        {
            return Repository.SelectAllColumnsFrom<T>();
        }
        public static Select Select()
        {
            return Repository.Select();
        }
        
        public static Select Select(params string[] columns)
        {
            return Repository.Select(columns);
        }
        
        public static Select Select(params Aggregate[] aggregates)
        {
            return Repository.Select(aggregates);
        }
   
        public static Update Update<T>() where T : RecordBase<T>, new()
        {
            return Repository.Update<T>();
        }
        
        public static Insert Insert()
        {
            return Repository.Insert();
        }
        
        public static Delete Delete()
        {
            return Repository.Delete();
        }
        
        public static InlineQuery Query()
        {
            return Repository.Query();
        }
                
        
    }
    #endregion
    
}
#region Databases
public partial struct Databases 
{
    
    public static readonly string SubSonicConn = @"SubSonicConn";
    
}
#endregion
View Code

相关文章:

  • 2022-12-23
  • 2021-04-17
  • 2022-03-05
  • 2021-06-12
猜你喜欢
  • 2021-08-22
  • 2022-12-23
  • 2022-01-27
  • 2022-12-23
  • 2021-08-11
  • 2021-07-01
相关资源
相似解决方案