【问题标题】:Setting up Entity Connection string Via Code通过代码设置实体连接字符串
【发布时间】:2018-01-02 03:37:26
【问题描述】:

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

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 出于安全原因伪装了我的真实密码。

这是我原来的有效连接字符串。我在 technet 上关注这个例子

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

是的,我没有那个例子是集成的 security = true 但我不想使用我想使用用户名和密码。

 <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

我没有得到任何数据,或者我将我的实体对象更改为如下。

    public SMBASchedulerEntities(string sConnectionString)
        : base(sConnectionString)
    {

    }

【问题讨论】:

  • 您应该删除 OnModelCreating。看看this postthis one
  • 实体连接字符串用于数据库优先应用,如果更改数据库则不需要(->代码优先)
  • @DevilSuichiro 请不要评论你不明白的问题

标签: c# winforms entity-framework


【解决方案1】:

您正在为 entityBuilder.Provider 提供“System.Data.SqlClient”,但据我所知,它应该是“System.Data.EntityClient”来创建与实体构建器的连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多