好的,所以我对切换数据库的实施有了进一步的了解,我的上下文类中有一个方法。
public string SetupConnections()
{
//Specify the provider name, server and database.
string providerName = "System.Data.SqlClient";
string serverName = ".";
string databaseName = "DBNAME";
// 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 = databaseName;
sqlBuilder.IntegratedSecurity = false;
sqlBuilder.UserID = "USERNAME";
sqlBuilder.Password = "PASS";
// 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://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
Console.WriteLine(entityBuilder.ToString());
using (EntityConnection conn =
new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
Console.WriteLine("Just testing the connection.");
conn.Close();
}
return sqlBuilder.ToString();
}
但是,当我运行应用程序时,它说基础提供程序无法为用户打开我添加了用户名和密码正确的obv伪装我的真密码出于安全原因。
这是我的orignal连接字符串有效。我在technet
中关注这个例子是的,我没有那个例子是整合的安全=真但我不想使用我想使用的用户名和密码。
<add name="SMBASchedulerEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=sourcenet;initial catalog=COASTALCAROLINAPODIATRY;User ID=scheduler;Password=Pass;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我也遇到了这个错误,我正在使用DB First
:上下文正在Code First模式中使用,代码是 从EDMX文件生成的数据库优先或模型优先 发展。这将无法正常工作。要解决这个问题,请不要 删除抛出此异常的代码行。如果你想使用 数据库优先或模型优先,然后确保实体 框架连接字符串包含在app.config或中 启动项目的web.config。如果你正在创建自己的 DbConnection,然后确保它是EntityConnection而不是 一些其他类型的DbConnection,并将它传递给其中一个 采用DbConnection的基础DbContext构造函数。了解更多 关于Code First,Database First和Model First,请参阅实体 这里的框架文档: http://go.microsoft.com/fwlink/?LinkId=394715
我没有得到任何数据,我改变了我的entites对象如下。
public SMBASchedulerEntities(string sConnectionString)
: base(sConnectionString)
{
}
答案 0 :(得分:0)
您正在使用&#34; System.Data.SqlClient&#34;提供entityBuilder.Provider。但它应该是&#34; System.Data.EntityClient&#34;根据我的知识用实体构建器创建connrction字符串。