EF
创新互联建站基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业光华机房服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
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)
using (MyObjectContext db = new MyObjectContext() ){ string sql = “ select columnA, columnB from TableA where 1 = 1 ”; db.ExecuteStoreQueryTableAObject(sql).ToList();//TableAObject就是你定义的对象,对象属性就是columnA, columnB}
性能上,自然是ef要低些。这是毫无疑问的。but,你觉得这点性能损耗和带来的方便快捷那个更重要,就像二八原则
我不是大神,但是你这个问题我有点思路,从MSDN()上可以看到影响EF性能的因素
第二种很快是因为dbcontext没有追踪你执行查询的结果(dbconext.Database.SqlQueryint("select count(*) from table")),你对这个结果附加where条件是不会加到EF生成的SQL语句上的
所以对于第一种情况,你可以使用NoTracking(dbconext.table.AsNoTracking().Count())来取消EF对结果的追踪
具体的区别你可以参考:
和:
分享题目:efnosql的简单介绍
网站网址:https://www.cdcxhl.com/article28/phgccp.html
成都网站建设公司_创新互联,为您提供、商城网站、网站设计、网站排名、Google、网页设计公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联