使用EF打开与DB的连接以执行adhoc查询

时间:2015-02-17 14:49:23

标签: c# asp.net-mvc entity-framework

我是一个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。

谢谢!

2 个答案:

答案 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();

更多关于Raw SQL Queries with Entity Framework

答案 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();
}