客户ERP解决方案(imho)是一个非常丑陋的数据库结构。它既不使用表也不使用表达式的名称。例如,地址表如下所示:
C001_T001
=========
T001_ID
T001_F001
T001_F002
T001_F003
[...]
数据库公开了一个OData-Feed,我可以用它来执行数据库操作。
我的想法是,围绕它创建一种包装。因此,查询数据库会更具表现力,更有趣,并最终提高工作效率。
// Not cool
ctx.C001_T001s.Where(x => x.T001_F002 == "Smith" && x.T001_F003 == "John")
// Cool!
Addresses.Where(x => x.LastName == "Smith" && x.FirstName == "John")
实现这一目标的可能方法有哪些?
答案 0 :(得分:1)
SImlpe。我一直这样做。
至少BlToolkit(我在这个地方的ORM)非常聪明,可以将where子句推送到SQL语句中,因此我可以获得高效的查找和良好的预测。
答案 1 :(得分:1)
如果暴露OData的服务是基于EF的,那么这在EF中应该非常简单,在模型中你可以重命名属性和实体(与它映射到的列和表相比)。然后OData将从EF中提取名字。