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

FMF*_*MFF 4 c# linq-to-entities entity-framework ado.net-entity-data-model .net-3.5

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

我有一个存储过程,它将返回如下所示的行。没有其他列可以作为该实体的键;结果如下所示:

COUNTRYCODE     QUANTITY
USA             100
UK              250
USA             300
USA             190
Run Code Online (Sandbox Code Playgroud)

等等。

我按照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 作为最后的手段。请帮忙。非常感谢。

Ada*_*son 5

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

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