Cra*_*aig 34 c# entity-framework
我们使用Entity Framework 5,但是还要求从应用程序使用正常的数据库连接来执行我们需要执行的某些自定义SQL.
所以,我正在创建一个处理此连接的DatabaseAccess类.有没有办法通过检查实体框架连接字符串来填充连接字符串?
所以:
SqlConnection cnn;
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"
Run Code Online (Sandbox Code Playgroud)
我可以通过检查实体框架来构建它吗?
Not*_*ple 72
您可以使用以下命令获取EF使用的连接字符串:
MyDbContext.Database.Connection.ConnectionString
Run Code Online (Sandbox Code Playgroud)
或者正如标记所说,您可以使用sqlconnection初始化上下文
Bry*_*yan 21
以下是如何获取EF 5,EF 6和EF Core 1/EF 7中的连接字符串.
//Entity Framework 5
myContext.Database.Connection.ConnectionString
//Entity Framework 6
myContext.Database.Connection.ConnectionString
//Entity Framework Core 1
myContext.Database.GetDbConnection().ConnectionString
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅 - http://nodogmablog.bryanhogan.net/2016/04/entity-framework-checking-the-connection-string-of-your-context/
Wim*_*tte 19
是的你可以.
请参阅此处了解3个选项.
1 - 为每个使用单独的连接字符串
2 - 从你的实体对象中提取它(这是我想你想要的)
3 - 使用实体对象执行自定义SQL
这是nr 2的方法:
using System.Data.EntityClient;
using System.Data.SqlClient;
...
private string GetADOConnectionString()
{
SalesSyncEntities ctx = new SalesSyncEntities(); //create your entity object here
EntityConnection ec = (EntityConnection)ctx.Connection;
SqlConnection sc = (SqlConnection)ec.StoreConnection; //get the SQLConnection that your entity object would use
string adoConnStr = sc.ConnectionString;
return adoConnStr;
}
Run Code Online (Sandbox Code Playgroud)
即使在EF3中,您也可以使用EntityConnectionStringBuilder.
EntityConnectionStringBuilder conn =
new EntityConnectionStringBuilder(DBEntities.dbConnection);
SqlConnection s = new SqlConnection(conn.ProviderConnectionString);
Run Code Online (Sandbox Code Playgroud)
你的意思是,你可以在你的EF DbContext中使用SqlConnection吗?
DbContext类有一个构造函数,您可以在其中传入SqlConnection,然后告诉EF它是否拥有它.
var YourContext = new YourContext(SqlConnection, true);
Run Code Online (Sandbox Code Playgroud)
//实体框架5
myContext.Database.Connection.ConnectionString
Run Code Online (Sandbox Code Playgroud)
//实体框架6
myContext.Database.Connection.ConnectionString
Run Code Online (Sandbox Code Playgroud)
//实体框架核心1
myContext.Database.GetDbConnection().ConnectionString
Run Code Online (Sandbox Code Playgroud)
小智 6
希望能帮助到你..
private readonly ApplicationDbContext _applicationDbContext;
string connectionString = string.Empty;
public CommonService(ApplicationDbContext applicationDbContext)
{
_applicationDbContext = applicationDbContext;
connectionString = _applicationDbContext.Database.GetDbConnection().ConnectionString;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我也遇到了这个问题,要解决此问题,您可以执行以下操作:
SqlConnection con = context.Database.Connection as SqlConnection;
SqlCommand command = new SqlCommand(sql, con);
con.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
while (reader.Read())
{
//read your fields
}
reader.NextResult();
}
con.Close();
Run Code Online (Sandbox Code Playgroud)