前 言:
公司ERP使用的Oracle11g的数据,需要使用c#对接,开发一个结算单的程序,开发过程中遇到的两个小问题和解决方法写到这里.
一、数据分页的实现
EF实现分页简直太简单了,以前java对接oracle 使用sql 来分写,都是要用rownum来实现
int totalNum = Fapiaos.Count();if (page <= 0)
{page = 1;
}
int maxPageNum = 1;
if (totalNum % rows == 0)
{maxPageNum = totalNum / rows;}
else
{maxPageNum = ((int)totalNum / rows) + 1;
}
if (page >= maxPageNum) { page = maxPageNum; }var returnFapiaos = Fapiaos.AsNoTracking().Skip((page - 1) * rows).Take(rows); //分页的代码
核心就是 AsNoTracking().Skip((page -1)* rows).Take(rows) 就是需要分页后的数据
务必注意Oracle 11特殊性,必须要申明sql使用的版本为11G, 在DBcontext实现类中 ,p => p.UseOracleSQLCompatibility("11"));
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (!optionsBuilder.IsConfigured){optionsBuilder.UseOracle( connectstring ,p => p.UseOracleSQLCompatibility("11"));}}
二、视图也可以在通过EF来生成Model 和 Dbset
需要EF6以上版本, 参数-t 后面跟视图名即可, 有些说要 -view, 我这边实际验证过只需要-t
Scaffold-DbContext -Connection "连接字符串" Oracle.EntityFrameworkCore -OutputDir Models -t 销售发票关联发出商品,销售发票汇总含毛利,销售发票明细表视图,结算单按发票表头 -force
哈哈,我视图名和字段名用的中文