我看了EF Code First的几个演示,还没有看到EFCF如何与存储过程一起工作。
如何声明将使用sp的方法?是否可以将实体传递给调用sp的方法,而无需手动将实体属性映射到sp参数?
另外,如果我更改模型会怎样?从模型重新创建表格时,它会掉落我的sp吗?那触发器呢?
如果不支持这些功能,将来是否有计划支持它们?
编辑: 我对EF4.1(以下)的原始答案现在已过时。请查看下面来自迭戈·维加(Microsoft EF团队的工作人员)的答案!
@gsharp和Shawn Mclean:您从哪里获得此信息?您仍然没有访问底层ObjectContext的权限吗?
IEnumerable<Customer> customers = ((IObjectContextAdapter)this) .ObjectContext.ExecuteStoreQuery<Customer>("select * from customers");
用存储的proc替换“ select”语句,然后就可以了。
至于您的其他问题:是的,很不幸,您的sp会崩溃。您可能需要在代码中添加“ CREATE PROCEDURE”语句。
对于EF 4.2:
var customers = context.Database.SqlQuery<Customer>("select * from customers")