从品牌网站建设到网络营销策划,从策略到执行的一站式服务
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对结果的追踪
具体的区别你可以参考:
和:
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图