Car*_*ngo 11 c# entity-framework
根据实体框架中显式关闭连接和http://msdn.microsoft.com/en-us/library/bb738582%28v=vs.90%29.aspx,我似乎应该使用上下文来创建连接而不是做以下
using (SqlConnection con = new SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog=Remember;server=(local)"))
{
...
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,我会
但是如何通过上下文获取SQL连接?
Lad*_*nka 19
在EF5(为EF6更改)中,以下将返回连接:
var connection = ((EntityConnection)context.Connection).StoreConnection;
如果以正确的方式使用EF,则可能永远不需要获得内部数据库连接.
我发现魔法在于ExecuteStoreCommand()
new AdventureEntities().ExecuteStoreCommand(
@" UPDATE Users
SET lname = @lname
WHERE Id = @id",
new SqlParameter("lname", lname), new SqlParameter("id", id));
Run Code Online (Sandbox Code Playgroud)
然后就不需要显式连接,它实际上使代码更清晰.上面的单行代码替换了以下所有代码
using (SqlConnection con = new SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog=Remember;server=(local)"))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = @"
UPDATE Users
SET lname = @lname
WHERE Id = @id";
cmd.Parameters.AddWithValue("lname", lname);
cmd.Parameters.AddWithValue("id", id);
cmd.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我使用下一个代码来获取连接(Entity Framework 5.0):
var connection = Context.Database.Connection;
Run Code Online (Sandbox Code Playgroud)
var efConnectionStringBuilder = new EntityConnectionStringBuilder(efConnectionString);
string sqlConnectionString = efConnectionStringBuilder.ProviderConnectionString;
Run Code Online (Sandbox Code Playgroud)
如果EF连接字符串存储在Web配置文件中,则可以使用以下代码将其分配给SQL数据源:
var connString = ConfigurationManager.ConnectionStrings["MyDataEntities"].ConnectionString;
EntityConnection ec = new EntityConnection(connString);
var storeConnect = ec.StoreConnection;
SqlDataSource1.ConnectionString = storeConnect.ConnectionString;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33908 次 |
| 最近记录: |