Relativno sam svez sa EF-om i LINQ-om pa reko da priupitam nekog ko ima vise iskustva sa doticnim ...
Dakle razvijam jedan projekat koji se oslanja na mssql bazu a u buducnosti to moze da bude i neka druga .
Za sad sam ostavio da mi se mapping fajlovi (csdl,ssdl,msl) generisu u output direktorijumu i da ih deploy-ujem zajedno sa ostalim assembly-ima .
Da napomenem da su mapping fajlovi i entiteti 1:1 znaci prostacko mapiranje entitetskih atributa i kolona u bazi .
Da li je kasnije moguce dodavanje podrske za drugu bazu (recimo mysql ) sto ce reci instaliranje .net provajdera za doticnu bazu na strani klijenta
i sto je najvaznije samo menjanje maping fajlova novim u bin direktorijum aplikacije kako bi izbegao nova kompajliranja a samim tim i dodatne konfiguracije i #if #else zaebancija .
U connection stringu ne bih drzao kobasicu koju mi generise EF (sa onim metadata putanjama) vec sam napravio svoj od parametra koji su potrebni za generisanje entity konekcije :
<connectionStrings>
<add name="xxxx" connectionString="Data Source=srv;Initial Catalog=xxxx;Integrated Security=True" providerName="System.Data.SqlClient"/>
Evo koda kako sam zamislio da to radi .
public static EntityConnection CreateDBConnection()
{
String strConnectionString = ConfigurationManager.ConnectionStrings["xxxx"].ConnectionString;
String strProviderName = ConfigurationManager.ConnectionStrings["xxxx"].ProviderName;
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = strProviderName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = strConnectionString;
String strLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
String strDir = Path.GetDirectoryName(strLocation);
// setovanje mapping fajlova
entityBuilder.Metadata = String.Format(@"{0}\Database\xxxx.csdl|{1}\Database\xxxx.ssdl|{2}\Database\xxxx.msl", strDir, strDir, strDir);
// Return the connection.
return new EntityConnection (entityBuilder.ToString()) ;
}
Sutradan ako neki od klijenata trazi podrsku za drugu bazu promenim connection string i provider name isporucim mu mapping fajlove koje sam generisao sa edmgen.exeom za tu bazu
a on instalira doticnog .net provajdera i to sve radi bez novog kompajliranja aplikacije ....
Da li je tako nesto moguce i da li je radio neko nesto slicno ?
[Ovu poruku je menjao deerbeer dana 26.12.2011. u 16:56 GMT+1]