SubSonic은 DbProviderFactory 패턴을 사용합니다. DbProviderFactory 접근 방식을 사용하면 구체적인 유형을 알지 못해 Connections/Commands/...를 만들 수 있습니다.
// without factory
var con = new MySqlConnection();
var cmd = new MySqlCommand();
// with factory
var factory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
var con = factory.CreateConnection();
var cmd = factory.CreateCommand();
더 일반적인 방법입니다.
그러나이 작업을 수행하려면 machine.config
파일에 일부 항목을 만드는 MySql.Data (msi-Package)를 설치해야합니다. 말했다
,
나는 여러 종속성을 설치하지 않고 새 시스템으로 전환하기가 훨씬 쉬워집니다 설치된 소프트웨어에 의존하지 않는 내 빌드 환경을 선호합니다.
그러나 이것은 약간의 작업이 필요합니다 : 난 그냥 복사
에서 조각을 붙여
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<configuration>
사이
</configuration>
당신의 app.config/web.config 파일을 수정하고이 곳을 배치
을
%windir%\Microsoft.NET\Framework\<version>\Config
MSI를 설치 한 후
솔루션에 여러 프로젝트가있는 경우 주 프로젝트 (서브 아닉은 런타임에 공급자를 찾을 수 있음)와 DAL 프로젝트 (코드 생성 중에 아음속은 공급자를 찾을 수 있음)에서이 작업을 수행해야합니다.
다른 MySQL 버전을 사용하는 경우이를 변경할 수 있습니다.
두 번째해야 할 일은 템플릿에 MySql.Data.dll (GAC에없는 경우)을 찾는 위치를 알려주는 것입니다.
당신은이와
<#@ include file="Settings.ttinclude" #>
<#@ assembly name="$(SolutionDir)\Dependencies\MySql.Data.dll" #>
<#@ import namespace="MySql.Data.MySqlClient" #>
<#+
내 솔루션을 찾아 실행 템플릿 생성도 깨끗한 어떤 MySQL의 구성 요소가 설치되지 않은 설치에서 찾을 작동 변경합니다 (assembly
지침을보고)를 MySQL.ttinclude
파일을 편집하여이 작업을 수행 할 수 있습니다.