J'ai besoin que ma DLL ait une base de données en lecture seule. J'ai fait ma base de données comme une ressource incorporée mais je ne suis pas capable de la comprendre pour me connecter à la base de données via le framework d'entité.Incorporation d'une base de données SQLite en lecture seule dans une DLL et une connexion via Entity Framework
try
{
var dataSet = ConfigurationManager.GetSection("system.data") as System.Data.DataSet;
dataSet.Tables[0].Rows.Add("SQLite Data Provider"
, ".Net Framework Data Provider for SQLite"
, "System.Data.SQLite"
, "System.Data.SQLite.SQLiteFactory, System.Data.SQLite");
}
catch (System.Data.ConstraintException) { }
string providerName = "System.Data.SQLite";
string serverName = "NameSpace.DB.sqlite";
// Initialize the connection string builder for the
// underlying provider.
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = "DB.sqlite";
sqlBuilder.IntegratedSecurity = true;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder =
new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/DataModel.DB.csdl|
res://*/DataModel.DB.ssdl|
res://*/DataModel.DB.msl";
Console.WriteLine(entityBuilder.ToString());
using (EntityConnection conn =
new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
Console.WriteLine("Just testing the connection.");
_container = new MyEntities(conn);
var usersList = _container.UserTable.ToList();
}
Cela fonctionne uniquement lorsque nous copions la base de données dans l'application cliente. Je ne veux pas fournir la base de données en tant que fichier séparé. Je veux l'incorporer dans la DLL et ne donner que la DLL à d'autres applications.
Cordialement, Vivek
L'exécution de l'application qui consomme cette DLL aura une référence aux DLL supportant SQLite. Mon seul problème est de communiquer à la ressource embarquée DB.Sqlite via le framework d'entité – user2058239