Entity framework 4 实体读取存储过程映射?

Entity framework 4 实体读取存储过程映射?,entity-framework-4,edmx,Entity Framework 4,Edmx,因此,我有一个客户要求,所有数据库操作都只使用存储过程。我为每个表创建了CRUD存储过程,然后创建了实体模型 因此,我很容易看到如何将插入、更新和删除存储过程映射到我的实体(例如客户),但似乎没有办法映射我的选择?这只是一个简单的旧选择,它应该只返回我的客户实体列表-因此它直接映射到我的实体类型,而不是自定义的。似乎唯一的方法是导入一个函数并映射它 那么为什么没有直接映射选择的功能呢?这样做对我来说会有巨大的好处 也许我的存储过程不太合适 有人有什么想法吗?您可以使用EF中的功能,该功能允许您将

因此,我有一个客户要求,所有数据库操作都只使用存储过程。我为每个表创建了CRUD存储过程,然后创建了实体模型

因此,我很容易看到如何将插入、更新和删除存储过程映射到我的实体(例如客户),但似乎没有办法映射我的选择?这只是一个简单的旧选择,它应该只返回我的客户实体列表-因此它直接映射到我的实体类型,而不是自定义的。似乎唯一的方法是导入一个函数并映射它

那么为什么没有直接映射选择的功能呢?这样做对我来说会有巨大的好处

也许我的存储过程不太合适


有人有什么想法吗?

您可以使用EF中的功能,该功能允许您将存储过程添加到图表中,这些存储过程将成为您可以直接调用的方法。如果随后打开模型浏览器,然后跟踪添加的选择过程,则可以双击每个过程并将返回类型绑定到实体模型。然后,调用约定将是

MyEntity entity = myDB.MyStoredProcedure().FirstOrDefault();
嗯,,
Jon

这是一个变通方法,我正在使用它。但它并没有真正解决问题——例如,对于DomainService类,它希望使用Customer属性来获取属性——我必须手动更改我的服务以使用导入的函数——如果我需要重新生成服务,这是不好的。可以映射Insert Update和Delete,以便在实体级别使用它们。但你不能为select做这件事。这并不是一个真正的“解决办法”,它似乎在逻辑上是合法的。对于select,正如我所提到的(“将返回类型绑定到实体模型”),存储过程可以直接映射到实体类型,而不是特定于存储过程函数的类型。因此,在我的示例中,MyStoredProcedure()返回MyEntity的实例,而不是其他对象的实例。默认情况下,这是另外一种情况,您必须从导入的接口级别手动将输出映射到MyEntity,这是将存储过程分配给实体的另一端。同样的不同,只是不同的地方。抱歉,如果我没有提供足够的帮助,但是要回答你最初的问题,如果lib仍然有这个限制,那么就没有什么可以做的了。现在我仍然很不高兴通过SPROC插入不会将IDENTITY列绑定到输出参数。对于被认为是“企业级”的EF4来说,它仍然是相当可怜的。不,这要归功于它和它必须产生的变通方法。