首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从实体DataSource获取UserID、UserID和密码?

如何从实体DataSource获取UserID、UserID和密码?
EN

Stack Overflow用户
提问于 2015-04-20 10:21:49
回答 2查看 5.5K关注 0票数 3

我们有一个与实体框架一起工作的ASP.NET MVC web应用程序。到目前为止,一切都运行得很好,但现在我需要实现一个函数,该函数允许将大量数据导入存档表。

我需要导入的数据是一个文件,我可以通过web应用程序上传和处理该文件。我的第一次尝试是读取行并为每一行创建新对象,我将其添加到该类型的列表中。然后,我使用EF的AddRange()方法将行添加到数据库。

由于内存和性能问题,该方法无法工作,即使是对小型导入文件也是如此。因此,我谷歌了一下,决定选择SQL大容量插入(从而绕过EF),这显然是最具表现力的方式。

在我的web.config中,我有EF连接字符串,它还包含访问数据库所必需的数据。因为我需要使用SqlConnection,所以我确实需要一个工作的SQLProvider ConnectionString。在这种情况下,EF连接字符串无法工作,因为SqlConnection不处理其他条目(导致诸如“不支持的关键字:元数据”等错误)。

因此,我想用一个SqlConnection构建一个新的SqlConnectionStringBuilder连接字符串。我只需要三个参数: UserID、密码和DataSource。所有这些都存在于EF连接字符串中。

如何从我现有的EF连接中获得它们?我绝对不想要一些丑陋的解析/重新定义,但我不知道如何获得这些值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-20 10:31:41

您可以尝试将EntityConnection直接转换为SqlConnection。这也将使您访问您需要的信息。

代码语言:javascript
复制
 using (var ec = new EntityConnection(connstr.ConnectionString))
 {
     var sqlConn = ec.StoreConnection as SqlConnection;
     sqlConn.Open();

     var dataSource = sqlConn.DataSource;
     var userId = sqlConn.Credential.UserId;
     var password = sqlConn.Credential.Password;
 }
票数 4
EN

Stack Overflow用户

发布于 2016-07-18 14:22:45

尽管这是一个老问题,但我在贴出一个回复,希望其他人可能会发现这是有用的。

接受的答案可能不利于那些不想仅仅为了获取数据源、用户凭据等属性而打开连接的人。

我就是这样做的:

Web.Config文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="Genus_Connection_String" connectionString="metadata=res://*/GenusEFModel.csdl|res://*/GenusEFModel.ssdl|res://*/GenusEFModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=D-SQL203;initial catalog=Genus_AIS_TaskDev_SB4;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
  </connectionStrings>
</configuration>

检索连接字符串的代码:

代码语言:javascript
复制
static void Main(string[] args)
{

    ConnectionStringSettings genusSettings = ConfigurationManager.ConnectionStrings["Genus_Connection_String"];
    if (genusSettings == null || string.IsNullOrEmpty(genusSettings.ConnectionString))
    {
        throw new Exception("Fatal error: Missing connection string 'Genus_Connection_String' in web.config file");
    }
    string genusConnectionString = genusSettings.ConnectionString;
    EntityConnectionStringBuilder entityConnectionStringBuilder = new EntityConnectionStringBuilder(genusConnectionString);
    SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder(entityConnectionStringBuilder.ProviderConnectionString);
    string genusSqlServerName = sqlConnectionStringBuilder.DataSource;
    string genusDatabaseName = sqlConnectionStringBuilder.InitialCatalog;

    Console.WriteLine("genusSqlServerName = " + genusSqlServerName);
    Console.WriteLine("genusDatabaseName = " + genusDatabaseName);
    Console.ReadLine();
}

如果要在连接字符串中设置用户If和密码,则可以按以下方式检索它们:

代码语言:javascript
复制
string userID = sqlConnectionStringBuilder.UserID;
string password = sqlConnectionStringBuilder.Password;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29745214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档