【发布时间】:2010-08-30 04:52:37
【问题描述】:
我有一个非常简单的存储过程,它返回多个记录集。所有记录集都有别名列,因此它们看起来都一样。
例如
SELECT TOP 10 FooId AS Id, Name As Name FROM Foos
SELECT TOP 10 BarId AS Id, Name As Name FROM Bars
...
对于我的 EF 设置,我正在使用 POCO 并拥有自己的 DataContext(无代码生成)。
现在,我使用详细的here 技术创建了一个“函数导入”。
但问题是,它创建了一个带有 Id 和 Name 的复杂类型,而不是一个可以包含多个 Id 和 Name 的 集合 的类型。 EF 不能检测到我正在返回多个记录集吗?
所以存储过程被正确执行,但返回的唯一记录来自第一个 select 语句,其他记录被丢弃。所以我只取回了 10 条记录。
这是我在自定义 DataContext 中执行 SPROC 的方式:
public ObjectResult<SomeSimpleProc_Result> GetSomeStuff()
{
return base.ExecuteFunction<SomeSimpleProc_Result>("SomeSimpleProc);
}
以及返回结果 POCO:
public class SomeSimpleProc_Result
{
#region Primitive Properties
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
#endregion
}
最终结果是我想要一个包含 0-* 个对象的对象(在上述情况下,3 个对象)。每个对象都应该有一组简单的对象(Id、Name)。
我认为问题肯定出在“功能导入”的自定义上。我应该如何创建复杂类型?或者我应该使用“返回实体集合”。
有什么想法吗?
【问题讨论】:
标签: c# .net stored-procedures entity-framework-4 poco