当前位置:首页 » 编程语言 » 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 06:48:36 浏览:818
小米笔记本存储不够 发布:2024-05-20 06:32:53 浏览:784
dirt5需要什么配置 发布:2024-05-20 06:02:58 浏览:543
怎么把电脑锁上密码 发布:2024-05-20 05:19:09 浏览:985
安卓为什么连上wifi后没有网络 发布:2024-05-20 05:17:50 浏览:419
安卓usb在设置哪里 发布:2024-05-20 05:03:03 浏览:187
绥化编程 发布:2024-05-20 04:59:44 浏览:991
基本原理和从头计算法 发布:2024-05-20 04:50:32 浏览:30
配置情况指的是什么 发布:2024-05-20 04:48:14 浏览:497
那个程序用来编译源文件 发布:2024-05-20 04:46:45 浏览:551