1 つのプロジェクトで使用する 2 つの異なるデータベースに対して Subsonic で生成された 2 つのデータ アクセス レイヤーがあるため、web.config には次のように記述します。
<SubSonicService>
<providers>
<add name="BLLDB" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="BLLDB" generatedNamespace="BLLDB" useSPs="true" />
<add name="BLLDB2" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="BLLDB2" generatedNamespace="BLLDB2" useSPs="true" />
</providers>
</SubSonicService>
それでも、いずれかの DAL のコードを呼び出すと、常にリストされている 2 番目のデータ プロバイダー (「BLLDB2」) が使用されるため、「BLLDB から読み取る必要があるときに、無効なオブジェクト名 'dbo.Users'」のようなエラーが発生します。 " (Select() で "BLLDB" を明示的に指定しているにもかかわらず)
たとえば、「BLLDB」DAL の次のコードを確認します。
Dim mySelect As New
SubSonic.Select(Databases.BLLDB)
mySelect.From(Of User)()
「mySelect.ProviderName」は文字列値「BLLDB2」を返します。
一方、「Databases.BLLDB」は文字列値「BLLDB」を返します。
何を与える??