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

ef與sql

發布時間: 2022-12-18 01:31:48

❶ MVC +EF快還是直接sql語句快

肯定是直接SQL快。畢竟經過的中間轉手環節少。

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

db.Database.SqlQuery<T>(sql).AsQueryable();//這個返回是queryable
返回DataTable要自己寫個擴展方法

public static DataTable SqlQueryForDataTatable(this Database db,
string sql,
SqlParameter[] parameters)
{

SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Connection.ConnectionString;
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;

if (parameters.Length > 0)
{
foreach (var item in parameters)
{
cmd.Parameters.Add(item);
}
}

SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}

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

❺ SQL語句轉換為EF語句

對你的情況模擬了一下,如下代碼,result 是你要的結果,希望對你有幫助。

List<SupportLog>SupportLog=newList<SupportLog>(){
newSupportLog(){Id=1,ActivityId=1,OpenId=1,CreateTime=newDateTime(2015,4,19)},
newSupportLog(){Id=2,ActivityId=2,OpenId=1,CreateTime=newDateTime(2015,4,13)},
newSupportLog(){Id=3,ActivityId=1,OpenId=111,CreateTime=newDateTime(2015,4,14)},
newSupportLog(){Id=4,ActivityId=1,OpenId=111,CreateTime=newDateTime(2015,4,14)},
newSupportLog(){Id=5,ActivityId=1,OpenId=111,CreateTime=newDateTime(2015,4,16)}
};List<mb_Activity>mb_Activity=newList<mb_Activity>(){
newmb_Activity(){ActivityId=1,OpenId=1},
newmb_Activity(){ActivityId=2,OpenId=111},
newmb_Activity(){ActivityId=3,OpenId=134},
newmb_Activity(){ActivityId=4,OpenId=12345},
newmb_Activity(){ActivityId=5,OpenId=22},
};


varresult=mb_Activity.Select(s=>new
{
s.ActivityId,
s.OpenId,
Count=SupportLog.Where(w=>w.OpenId==s.OpenId&&w.CreateTime>newDateTime(2015,4,13)).Count()
});

❻ 請問.net為什麼拋棄了linq to sql EF與linq to sql 相比較,前者有哪些優勢

說是拋棄也不太對,因為這部分被合並在Linq to Entity裡面了。

ADO.Net Entity Framework 與Linq to SQL的比較和適用場景:
MSDN上最近發表了一篇Elisa Flasko著的文章,比較了LINQ to SQL與LINQ to Entities適用的場景:
Introcing LINQ to Relational Data
http://msdn2.microsoft.com/en-us/library/cc161164.aspx
作者指出,LINQ to SQL主要的應用場景是針對微軟SQL Server資料庫的快速開發,這些應用的對象模型與資料庫中數據定義的結構間非常類似,幾乎有一一對應的映射關系,這樣你可以使用LINQ to SQL把一些數據表直接映射到.NET類,數據欄位映射到的相應的.NET類的屬性上。作者總結如下:
LINQ to SQL適用之場景
.想使用ORM方案,而且資料庫數據定義與對象模型是1:1對應關系
. 想使用ORM方案,而且對象繼承結構儲存在單一數據表中(單表繼承)
. 想使用原始CLR類,而不是使用生成的類或需要從某個基類繼承而來,或者需要實現某個介面
. 想使用LINQ來編寫查詢
. 想使用ORM,但需要性能非常好,可以通過存儲過程和編譯的查詢來優化性能
LINQ to Entities主要的應用場景針對的是需要非常靈活和更復雜的映射的場景,特別是在企業應用方面,而且需要訪問其他的資料庫系統。在這些場景中,數據表的結構與對象模型也許差別很大,而且應用開發人員往往並不擁有生成或修改資料庫數據定義的權利。
LINQ to Entities適用之場景 :

.想要開發針對微軟SQL Server或其他資料庫系統的應用
. 想要定義領域模型,並以之為持久層的基礎
. 想要使用ORM方案,對象也許與資料庫數據定義有1:1對應關系,也許結構迥異
. 想要使用支持單表繼承和其他儲存方案(每類一表,每具體類一表)的ORM方案
. 想使用LINQ來編寫查詢,並且查詢可以在不同資料庫系統下工作
. 想使用ORM,但需要性能非常好,可以通過存儲過程和編譯的查詢來優化性能

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

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

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

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#用 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)

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

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

熱點內容
加西貝拉壓縮機好嗎 發布:2024-05-20 08:58:56 瀏覽:756
eve腳本航 發布:2024-05-20 08:56:59 瀏覽:590
取票人的密碼是什麼 發布:2024-05-20 08:21:43 瀏覽:962
天貓帳號密碼應輸入什麼 發布:2024-05-20 08:16:26 瀏覽:272
plsql異常處理 發布:2024-05-20 07:54:47 瀏覽:542
dreamweaver上傳網頁 發布:2024-05-20 07:51:24 瀏覽:462
拍攝車的分鏡頭腳本 發布:2024-05-20 07:50:15 瀏覽:137
mg名爵最高配置是哪個 發布:2024-05-20 07:45:11 瀏覽:376
輔助官網源碼 發布:2024-05-20 07:31:48 瀏覽:866
androidbutton的屬性 發布:2024-05-20 07:18:58 瀏覽:637