2016-04-28 12 views
0

私のDLLには読み取り専用データベースが必要です。エンベデッドリソースとしてデータベースを作成しましたが、エンティティフレームワークを使用してデータベースに接続することはできません。DLLに読み取り専用SQLiteデータベースを組み込み、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(); 
     } 

データベースがクライアントアプリケーションにコピーされている場合にのみ機能します。私は別のファイルとしてデータベースを提供したくありません。私はそれをdllに埋め込み、dllだけを他のアプリケーションに与えたいと思っています。

よろしく、 のVivek

答えて

0

CL。 SQLiteは独立した.sqliteファイルになければならない、それは埋め込むことはできません。 SQL Server Compactをご覧ください。 Entity Frameworkを使用してアクセスできる組み込みSQLデータベースは、必要なだけです。

EFに接続する方法はtutorialです。

0

のSQLiteデータベースはファイルに基づいています。

SQLiteライブラリには、virtual file systemを介してファイルにアクセスする機能があり、ファイルへのアクセスを別の場所にリダイレクトすることができます。したがって、リソースにアクセスするVFSを実装することは可能です。

ただし、System.Data.SQLiteでは、独自のVFSを登録することはできません。

+0

このDLLを消費するアプリケーションを実行すると、SQLiteをサポートするDLLが参照されます。私の唯一の問題はエンティティフレームワークを介して組み込みリソースDB.Sqliteと通信することです – user2058239

関連する問題