0

我正在寻找一些关于如何调整实体类的 T4 代码生成的指导,EntityModel.tt并且可能EntityModel.Context.tt(我正在使用 POCO 类)强制对实体的任何查询使用存储过程(我已经有 EntitySQL.tt 生成我的所有存储过程)

例如,像

context.MyEntities().Single(c => c.id == 5)

不会生成 SQL,但会调用 SP `sp_GetMyEntities'

如果您有更好的策略来实现相同的结果,我将很高兴了解它。

更新 此时我只对 CRUD 的 READ 部分感兴趣。并且没有连接。只需按 ID 简单加载单个实体。理论上,SP可以设置为接受加载项的ID作为参数,以避免加载整个表(在这种情况下,.Single(c => c.id == 5)部分将需要bn,并且ID将提供给MyEntities对象。

这是一个“数据库优先”的实现

4

1 回答 1

1

代码优先不支持映射到存储过程。模型优先和数据库优先流确实支持映射到存储过程,但它不能按照您希望使用的方式工作,因为存储过程不可组合(即,如果您这样做 .Single() 过滤最多只会在客户端发生,而不是在数据库中 - 出于性能原因,您希望在数据库站点上进行过滤,因为您可能不想将整个数据库带到客户端只是为了选择一个实体)。.NET Framework 4.5 附带的 Entity Framework 5 的核心库支持可组合的 TVF,应该可以实现您所追求的目标,但在代码优先的场景中也不行。

于 2012-05-18T23:37:51.817 回答