Zitat von
Jürgen Thomas:
Also will ich gezielt FirebirdClientFactory einbinden, was mir aber nicht gelingt:
Versuch A
Code:
dataFactory = FirebirdSql.Data.FirebirdClient.FirebirdClientFactory;
Zitat von
Fehlermeldung:
FirebirdSql.Data.FirebirdClient.FirebirdClientFact ory ist ein Typ, das im gegebenen Kontext jedoch ungültig ist.
Versuch B mit gleicher Fehlermeldung:
Code:
dataFactory = FirebirdSql.Data.FirebirdClient.FirebirdClientFactory();
Versuch C
Code:
dataFactory = new FirebirdSql.Data.FirebirdClient.FirebirdClientFactory();
Zitat von
Fehlermeldung:
Der Typ FirebirdSql.Data.FirebirdClient.FirebirdClientFact ory hat keine definierten Konstruktoren.
FirebirdClientFactory hat
keinen öffentlichen Konstruktor!
Du kannst also höchstens FirebirdClientFactory.instance benutzen. Oder du gehst den Weg über die ProviderFactory, die macht nichts anderes.
Versuch A kann nicht gehen, da du einen Typen nicht einfach so in eine Variable stecken kannst (Kontext ungültig
)
Versuch B kann nicht gehen, da ein Typ keine Funktion ist, selbst ein "new" (Versuch C) davor kann nicht gehen, da der Contructor private ist.
FirebirdClientFactory ist nunmal ein Singleton, auch wenn das hier
IMHO Blödsinn ist.
Ich glaube der von mir gezeigte Weg ist der schniekeste, denn:
- Du hast keine fixe Referenz auf den FbProvider in deinem Code
- Das Settings system im VS05 macht solche Dinge sehr easy, da du eine passend typisierte Eigenschaft für jedes Settign bekommst.
Um Settings nutzen zu können musst du die Projektoptionen öffnen, dort seitlich auf den Reiter "Settings" gehen.
Wenn du noch keine Settings hast, findest du einen Link, der sie anlegen wird.
Nun kannst du einfach einen neuen Eintrag anlegen und ihm einen Default wert geben. (im Screenie siehst du den, den ich für den Bleistift code genommen habe)
Jetzt solltest du das hier machen können:
Code:
DbProviderFactory factory = DbProviderFactories.GetFactory(Settings.Default.DefaultProviderName);
using (IDbConnection connection = factory.CreateConnection())
{
Console.WriteLine(connection);
}
btw: Den Teil des type-Attributes in der Provider-section, kannst du direkt aus dem Reflector kopieren. Dadurch kannst du dir sicher sein, dass Version, Culture und Public key token richtig sind.