當前位置:首頁 » 編程語言 » ef執行sql查詢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ef執行sql查詢

發布時間: 2023-03-22 14:58:09

A. 如何得到EF查詢生成的sql

在EF 4.1中,我們可以直接調用DbQuery<>的ToString()方法得到所生成的SQL。

using (var context = new MyDbContext())
{
    var people = from p in context.People
                 where p.PersonID > 100
                 select p;

    string sql = people.ToString();
}

所生成的SQL是:
SELECT 
[Extent1].[PersonID] AS [PersonID], 
[Extent1].[Name] AS [Name]
FROM [dbo].[People] AS [Extent1]
WHERE [Extent1].[PersonID] > 100
大 家應該已經猜到,這里的ToString()方法其實也就是調用了ObjectQuery<>的ToTraceString()方法。 DbQuery<>.ToString() ==> System.Data.Entity.Internal.Linq.InternalQuery<>.ToString()方法,此方法 在.NET Reflector得到的實現是這樣的:
public override string ToString()
{
    return this._objectQuery.ToTraceString();
}

B. 如何在EF中直接運行SQL命令

EF model first方式, 你的DB是繼承ObjectContext

using (MyObjectContext db = new MyObjectContext() )

{

string sql = 「 select columnA, columnB from TableA where 1 = 1 」;

db.ExecuteStoreQuery<TableAObject>手迅(sql).ToList();//租猛TableAObject就是你定義的對象,對象屬性就是columnA, columnB

}

code first, 你的db是繼承DbContext

using (MyDbContext db = new MyDbContext() )
{
string sql = 「 select columnA, columnB from TableA where 1 = 1 」;
db.TableAObject.SqlQuery(sql).ToList();//TableAObject就是在MyDbContext 定義的對象
}

這里只是列舉查詢的方式,僅供參考,一畢型此般新增 刪除 或者修改 用對象的方式比較多,如果是sql,一般是

db.Database.ExecuteSqlCommand(sqlString)

C. EF怎麼使用SQL語句查詢到結果然後映射到自定義實體去

給你舉個例子:

staticvoidMain(string[]args)
{
using(MyDBEntitiesen=newMyDBEntities())
{
varp1=en.People.First(x=>
x.Name=="Jim");
Console.WriteLine(p1.Age);

varp2=en.Database.SqlQuery<Person>(
@"selecttop1*fromperson
wherename='Jim'")
.First();
Console.WriteLine(p2.Age);
//p1p2是同一個記錄
}
Console.ReadLine();
}

D. 如何在EF中直接運行SQL命令

在 EF第一個版本(.NET 3.5 SP1)中,我們只能通過將ObjectContext.Connection轉換姿侍拍為EntityConnection,再把 EntityConnection.StoreConnection轉換為SqlConnection。有了這個SqlConnection,我們再創建 SqlCommand便能順利運行SQL命令了。(個人覺得其跡羨實很煩,呵呵)
例如:
EntityConnection entityConnection = (EntityConnection)ctx.Connection;
DbConnection storeConnection = entityConnection.StoreConnection;
DbCommand cmd = storeConnection.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcere;
cmd.CommandText = "[PRO_USER_DIGITALCARD_CHECK]";
。。。。。。。
在EF4(.NET 4)中,我們有了全新的API:ObjectContext.ExecuteStoreCommand(...)和 ObjectContext.ExecuteStoreQuery<T>(...)。從函數名不難知道前者是為了執行某一並無返回集的SQL 命令,例如UPDATE,DELETE操作;後者是執談汪行某一個查詢,並可以將返回集轉換為某一對象。

E. 如何在EF中直接運行SQL命令

http://..com/link?url=-B5UeGGl9eOYqbI-n-2QoN_q9j1bzVJeHesY8hUzdHGOQgC-xYS9hScodFNUAzykAZOqbYETj7MS
參考資料在這里你可以看看

F. ef使用sql語句查詢單個數據,比如我要查詢某表裡面的某一個值,該怎麼用。謝謝大神

declare
varchar temp(10)
select @temp=z from DB:A where ...
if(@temp==1)
select * from DB:B where...
else if(@temp==2)
select * from DB:C where...
else if(@temp==3)
select * from DB:D where...
這個思路應該是這樣的,你自己把代碼補充完整,數據類型定好,希望能幫到你