实体框架 - 存储过程结果为没有主键的实体

时间:2011-07-13 22:01:22

标签: c# entity-framework .net-3.5 linq-to-entities ado.net-entity-data-model

如果已经提出并回答了这个问题,请原谅我。如果是这样,请指点我。我使用VS2010而不是.Net 3.5(平台更新不在我的控制范围内)和最新的Service Pack。

我有一个存储过程,它将返回如下所示的行。没有其他列可以作为此实体的密钥;结果看起来像这样:

COUNTRYCODE     QUANTITY
USA             100
UK              250
USA             300
USA             190

等等。

我按照http://blogs.microsoft.co.il/blogs/gilf/archive/2009/03/13/mapping-stored-procedure-results-to-a-custom-entity-in-entity-framework.aspx

中的步骤操作

以及http://msdn.microsoft.com/en-us/library/cc982038(v=VS.90).aspx

这导致错误“实体类型soAndso没有定义键。定义此实体类型的键

我们如何缓解此错误?我这里不需要主键,也无法修改存储过程。我要求SOF作为最后的手段。请帮忙。非常感谢你。

1 个答案:

答案 0 :(得分:4)

如果您不需要主键,那么我假设您无需修改此数据并将其提交回服务器。在这种情况下,您应该使用复杂类型而不是实体类型。复杂类型是类,可以像实体一样用作DTO,但是不能将复杂类型用作基本的插入/更新/删除对象。

编辑:看起来复杂类型可能无法在EFv1(.NET 3.5)中使用,除非作为对实体类型的标量属性进行分组的方法。不幸的是,EFv1远远不如EFv4,并且根本不存在涉及使用实体框架的问题的解决方案。