# 开始使用时,可能需要注意的问题

# 1 SmartSqlMapConfig.xml

一个比较简单的 SmartSqlMapConfig.xml 配置如下。

<SmartSqlMapConfig xmlns="http://SmartSql.net/schemas/SmartSqlMapConfig.xsd">
    <Settings IgnoreParameterCase="false" ParameterPrefix="$" IsCacheEnabled="true" EnablePropertyChangedTrack="true"/>

    <Database>
        <DbProvider Name="MySql"/>
        <Write Name="WriteDB" ConnectionString="${ConnectionString}"/>
        <Read Name="ReadDb-1" ConnectionString="${ConnectionString}" Weight="100"/>
    </Database>

    <SmartSqlMaps>
        <SmartSqlMap Path="Mappers" Type="Directory"></SmartSqlMap>
    </SmartSqlMaps>
</SmartSqlMapConfig>

# 1.1 ParameterPrefix :SQL 中的参数前缀

写的 SQL 大概是这个样子:

SELECT * FROM t_user WHERE c_id= @id

这里的 @id 是需要被替换的参数,那前缀是 @,?,#,: 中的哪一个呢?上面配置的是 $. 出了使用配置的值,还可以使用数据库默认的前缀。

数据库连接类型 默认前缀
SQLSERVER @
MS_SQLSERVER @
MYSQL ?
MYSQL_CONNECTOR ?
POSTGRESQL @
ORACLE :
SQLITE @

也可以针对数据源进行单独配置,如: 这里使用的就是 #

    <Database>
        <DbProvider Name="SQLite" ParameterPrefix="#"/>
        <Write Name="WriteDB" ConnectionString="${ConnectionString}"/>
        <Read Name="ReadDb" ConnectionString="${ConnectionString}" Weight="100"/>
    </Database>

对应的 SQL 就是:

SELECT * FROM T_User WHERE Id = #id

# 1.2 SmartSqlMaps : SQL XML 文件的定义位置

定义之后,需要拷贝到输出目录, 你需要在 csproj 文件中加这么一段:

    <ItemGroup>
        <None Update="SmartSqlMapConfig.xml">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
        <None Update="Mappers\*.xml">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>

# 2 Repository 接口的命名

默认情况下,应该使用 I{Scope}Repository 的方式,也可以自己配。

依赖注入 | SmartSql(opens new window)

<SmartSqlMap Scope="User" xmlns="http://SmartSql.net/schemas/SmartSqlMap.xsd">
</SmartSqlMap>

这里的 Scope="User" 对应的接口命名(默认情况下)就需要是:IUserRepository 。

# 3 其它

  • 使用 MySQL 数据库,连接字符串中,需要加上 AllowUserVariables=True;
  • 想要查看详细的日志和生成的 SQL 语句,将日志输出级别调整为 DEBUG.