我是一个asp.net的硬核,EF + MVC = ME + WTF。
我有一项任务是打开与每个生产数据库服务器的连接。运行一个简单的查询“从t1选择顶部1 *,其中f1> 1”。
我以为我可以使用system.data.sqlclient构建conn字符串,打开conn并执行查询。
这似乎不起作用。每个连接都需要永远。
如何使用EF获取db对象的实例。我已经看到了大量的dbcontext示例,但我甚至不知道如何获得它以及它是什么。
我需要连接到20个单独的DB1,TBL1,FLD1并执行上面的查询。如果他们都成功将int 200返回到MVC视图,即使一个失败也只返回503。
谢谢!
答案 0 :(得分:0)
您可以使用DbConnection
获取EF中基础Database.Connection
的引用。
例如:
var dbConn = context.Database.Connection;
var cmd = dbConn.CreateCommand();
cmd.CommandText = "SELECT TOP 1 * from t1 WHERE f1 > 1";
var results = cmd.ExecuteReader();
答案 1 :(得分:0)
From Microsoft doc - Sending Raw Commands To The Database
A-如果您不知道实体
using (var context = new BloggingContext())
{
var blogNames = context.Database.SqlQuery<string>(
"SELECT Name FROM dbo.Blogs").ToList();
}
B-如果您知道实体
using (var context = new BloggingContext())
{
var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}