【问题标题】:Entity Framework - Stored Procedure result as an entity without Primary Key实体框架 - 存储过程结果作为没有主键的实体
【发布时间】:2011-07-13 22:01:22
【问题描述】:

如果这个问题已经被问及并得到回答,请原谅我。如果是这样,请指出我。我在 .Net 3.5 上使用 VS2010(平台更新不在我的控制范围内)和最新的服务包。

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

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

这一直导致错误“Entity Type soAndso has no key defined. Define the Key for this Entity Type

我们如何减轻这个错误?我只是在这里不需要主键,也不能修改存储过程。我要求 SOF 作为最后的手段。请帮忙。非常感谢你。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢亚当。您的猜测是正确的,SP 仅执行 SELECT。不涉及更新/插入/删除。也就是说,如果我选择 .Net 3.5 作为我的目标平台,VS2010 将无法使用复杂类型。并且将部署此代码的机器没有安装 4.0。 :-( 我该怎么办?
    • @FMFF:查看@pirho 的链接后,听起来复杂类型在EFv1 中可能受到更多限制。我不能根据经验说话,因为在所有在线谈话之后我都远离那个版本,但如果是这样的话,那么不幸的是,你的问题可能无法解决。 EF 设计器是否只允许您映射到实体类型?发布屏幕截图可能会有所帮助。
    • @pirho:这是映射到实体,而不是复杂类型(或实体以外的任何东西)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多