當前位置:首頁 » 編程語言 » ef執行sql

ef執行sql

發布時間: 2022-06-29 07:59:18

⑴ 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...
這個思路應該是這樣的,你自己把代碼補充完整,數據類型定好,希望能幫到你

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

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

相信不少使用EF的同志們已經知道如何在EF中運行SQL命令了。我在這里簡單總結下,希望對大家學習EF有所幫助!

在 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操作;後者是執行某一個查詢,並可以將返回集轉換為某一對象。

using (var ctx = new MyObjectContext())
{
ctx.ExecuteStoreCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
}
using (var ctx = new MyObjectContext())
{
var peopleViews = ctx.ExecuteStoreQuery<PersonView>("SELECT PersonID, Name FROM Person");
}

public class PersonView
{
public int PersonID { get; set; }
public string Name { get; set; }
}
現在有了EF4.1,API的名字又有了些許改變。如果說DbContext將ObjectContext做了包裝,那麼DbContext.Database就是對應於資料庫端信息的封裝。執行SQL命令也自然從Database類型開始。對應於ExecuteStoreCommand和ExecuteStoreQuery<T>的是Database.ExecuteSqlCommand和Database.SqlQuery<T>。

using (var ctx = new MyDbContext())
{
ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
}
using (var ctx = new MyDbContext())
{
var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList();
}

public class PersonView
{
public int PersonID { get; set; }
public string Name { get; set; }
}

⑷ c# sql語句怎麼用ef的語句寫

using (MyObjectContext db = new MyObjectContext() ){ string sql = 「 select columnA, columnB from TableA where 1 = 1 」; db.ExecuteStoreQuery<TableAObject>(sql).ToList();//TableAObject就是你定義的對象,對象屬性就是columnA, columnB}

⑸ EF和SQL 語句 哪個執行效率更高

性能上,自然是ef要低些。這是毫無疑問的。but,你覺得這點性能損耗和帶來的方便快捷那個更重要,就像二八原則

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

現在有了EF4.1,API的名字又有了些許改變。如果說DbContext將ObjectContext做了包裝,那麼DbContext.Database就是對應於資料庫端信息的封裝。執行SQL命令也自然從Database類型開始。對應於ExecuteStoreCommand和ExecuteStoreQuery<T>的是Database.ExecuteSqlCommand和Database.SqlQuery<T>。

using (var ctx = new MyDbContext())
{
ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
}

using (var ctx = new MyDbContext())
{
var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList();
}

public class PersonView
{
public int PersonID { get; set; }
public string Name { get; set; }
}

⑺ 如何得到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();
}

⑻ ef 為什麼sql執行完關閉連接慢

Shark為了實現Hive兼容,在HQL方面重用了Hive中HQL的解析、邏輯執行計劃翻譯、執行計劃優化等邏輯,可以近似認為僅將物理執行計劃從MR作業替換成了Spark作業(輔以內存列式存儲等各種和Hive關系不大的優化);同時還依賴Hive Metastore和Hive SerDe(用於兼容現有的各種Hive存儲格式)。這一策略導致了兩個問題,第一是執行計劃優化完全依賴於Hive,不方便添加新的優化策略;二是因為MR是進程級並行,寫代碼的時候不是很注意線程安全問題,導致Shark不得不使用另外一套獨立維護的打了補丁的Hive源碼分支(至於為何相關修改沒有合並到Hive主線,我也不太清楚)。

⑼ 如何優化EF才能產生性能更好的sql語句

在mysql admin裡面建表的時候把欄位設 為自動增長就可以了,自動增長的欄位在插入的時候不需要編號,會自動往下排。
用了自動增長,插入的時候就不要加UID了,跟SQL 裡面的是否標識的自動增長一樣!

⑽ c#用 ef怎麼執行sql語句

EF
model
first方式,
你的DB是繼承ObjectContext
using (MyObjectContext db = new MyObjectContext() )
{
string sql = 「 select columnA, columnB from TableA where 1 = 1 」;
db.ExecuteStoreQuery
(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)

熱點內容
電腦怎樣編程 發布:2024-10-18 12:06:55 瀏覽:528
圖的鄰接表存儲及遍歷 發布:2024-10-18 12:02:31 瀏覽:495
如何查詢電腦型號的配置 發布:2024-10-18 11:57:42 瀏覽:273
如何開張一個租賃伺服器 發布:2024-10-18 11:46:13 瀏覽:826
python解析json文件 發布:2024-10-18 11:29:34 瀏覽:311
編譯程序的生成程序 發布:2024-10-18 11:29:27 瀏覽:404
軌跡處理演算法 發布:2024-10-18 11:22:25 瀏覽:783
支付密碼怎麼破解 發布:2024-10-18 11:09:19 瀏覽:145
線性鏈表c語言 發布:2024-10-18 11:09:17 瀏覽:785
淘寶賣的腳本可靠嗎 發布:2024-10-18 10:54:04 瀏覽:120