我有與SqlServerCe.3.5連接實體框架的問題。 我有一個名爲Assets with .SDF數據庫和實體的小項目(模型名稱爲Main)。 現在,當我試圖連接到實體發生了一些奇怪的事情。 在第一時間一切工作正常,但現在我有一定要加入這個:c# - 實體框架與SqlServerCe.3.5 - 連接異常
if (edmConnection.State != ConnectionState.Open)
{
edmConnection.Open();
}
,因爲所有的時間到實體連接被關閉。 i之後加入此線,我可以達到數據庫和實體,但我得到這樣的信息:
指定命名的連接或者未在配置中發現的,而不是意在與EntityClient提供者可以使用,或無效。
這是堆棧跟蹤:
在System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串newConnectionString) 在System.Data.EntityClient.EntityConnection..ctor(字符串的connectionString) 在System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString) at System.Data.Objects.ObjectContext ..ctor(String connectionString,String defaultContainerName) at BL.Model.DBEntities..ctor()in C:\ Users \ Orel \ Documents \ Visual Studio 2010 \ Projects \ Assets \ BL \ Model \ Main.Designer.cs:line 34 0 ()中的BL.Handlers.mModelHandler..ctor() (位於C:\ Users \ Orel \ Documents \ 30
這是我的代碼,並在app.config:
private static mModelHandler _mInstance = null;
public static DBEntities m_context = null;
public static mModelHandler GetOnlyInstance()
{
if (_mInstance == null)
{
try
{
m_context = new DBEntities(GetConnectionString());
_mInstance = new mModelHandler();
}
catch (Exception)
{
throw;
}
}
return _mInstance;
}
public static EntityConnection GetConnectionString()
{
try
{
var filePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
if (filePath == null) throw new ArgumentNullException("filePath");
if (filePath.EndsWith("\\Assets\\bin\\Debug"))
{
filePath = filePath.Replace("\\Assets\\bin\\Debug", "\\BL\\DB.sdf");
}
var sqlCeConnectionString = string.Format("Data Source={0}", filePath);
// Create an EDM connection
EntityConnectionStringBuilder entity = new EntityConnectionStringBuilder();
entity.Metadata = "res://*/Model.Main.csdl|res://*/Model.Main.ssdl|res://*/Model.Main.msl";
entity.Provider = "System.Data.SqlServerCe.3.5";
entity.ProviderConnectionString = sqlCeConnectionString;
var edmConnectionString = entity.ToString();
var edmConnection = new EntityConnection(edmConnectionString);
if (edmConnection.State != ConnectionState.Open)
{
edmConnection.Open();
}
return edmConnection;
}
catch (Exception e)
{
throw;
}
}
在app.config:
<add name="DBEntities" connectionString="metadata=res://*/Model.Main.csdl|res://*/Model.Main.ssdl|res://*/Model.Main.msl;provider=System.Data.SqlServerCe.3.5;provider connection string='Data Source=|DataDirectory|\DB.sdf'" providerName="System.Data.EntityClient" />
我在4米閱讀,問題可以是應用程序。配置和連接字符串a再無法比擬的,我想這也和它這麼想的工作..
我只是說了這樣一個形象: Link
幫助!
Orel
難道你不能使用EF設計師自動生成的配置/連接字符串嗎? –
我使用了自動生成的配置/連接,我的問題是在代碼不在app.config –