Forum: ASP.NET2.0 |
Thema:
AW: Datenbanken abhängig vom Host Header Namen verbinden |
Von:
Thomas Hauser (
26.09.2007 23:47) |
Hallo,
ein ADO.NET Provider wäre hier vermutlich ein bisschen viel Arbeit.
Einfachste Möglichkeit:
1. Designen mit einer Beispiel-Datenbank.
2. Eine Klasse schreiben, die aufgrund des aktuellen HttpContext den richtigen ConnectionString und den ProviderName ermittelt.
3. Eine Klasse schreiben, die Du von SqlDataSource ableitest.
3.1 Überschreiben von ConnectionString Eigenschaft
3.2 Überschreiben der ProviderName Eigenschaft
Bsp:
namespace ppedv.Web.Components
{
public class SqlDataSource : System.Web.UI.WebControls.SqlDataSource
{
public override string ProviderName
{
get { return "System.Data.OleDb"; }
set { base.ProviderName = value; }
}
public override string ConnectionString
{
get { return "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=aspnetdb;Data Source=."; }
set { base.ConnectionString = value; }
}
}
}
Anstelle meiner Standardrückgabe muss natürlich aus der in 2. implementierten Klasse der ConnectionString bzw. der ProviderName ermittelt werden.
4. Produktiv dann einfach die Standard SqlDataSource-Klasse auf die eigene SqlDataSource-Klasse mappen:
<configuration>
...
<system.web>
...
</compilation>
...
<pages>
<tagMapping>
<add tagType="System.Web.UI.WebControls.SqlDataSource, System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a" mappedTagType="ppedv.Web.Components.SqlDataSource, __code"/>
</tagMapping>
</pages>
...
</system.web>
...
</configuration>
Grüße,
Thomas
Thomas Hauser (Trainer und Consultant, Blog: http://thomashauser.spaces.live.com, Forum: http://www.sharepointbook.de - Die Forum-Webseite zum Buch!)
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!