通过代码

时间:2018-01-02 03:37:27

标签: c# winforms entity-framework

好的,所以我对切换数据库的实施有了进一步的了解,我的上下文类中有一个方法。

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

中关注这个例子

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string

是的,我没有那个例子是整合的安全=真但我不想使用我想使用的用户名和密码。

 <add name="SMBASchedulerEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=sourcenet;initial catalog=COASTALCAROLINAPODIATRY;User ID=scheduler;Password=Pass;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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)
    {

    }

1 个答案:

答案 0 :(得分:0)

您正在使用&#34; System.Data.SqlClient&#34;提供entityBuilder.Provider。但它应该是&#34; System.Data.EntityClient&#34;根据我的知识用实体构建器创建connrction字符串。