0

我有一个包含 3 个选择语句的存储过程:

select col1, col2 from table1
select col1, col2 from table2
select col1, col2 from table3

我为每个表创建了 3 个模型:

public class table1
{
    public string col1 { get; set; }
    public string col2 { get; set; }
}
public class table2
{
    public int col1 { get; set; }
    public int col2 { get; set; }
}
public class table3
{
    public decimal col1 { get; set; }
    public decimal col2 { get; set; }
}

然后是另一个包含这些模型列表的模型,例如:

public class mymodel
{
    public IEnumerable<table1> table1 { get; set; }
    public IEnumerable<table2> table2 { get; set; }
    public IEnumerable<table3> table3 { get; set; }
}

我正在尝试填写mymodel

var model = context.ExecuteStoreQuery<mymodel>("sproc1").FirstOrDefault(); 

mymodel总是有nullfortable1和。table2table3

我怎样才能做到这一点?EF4 支持吗?

4

1 回答 1

2

您不能从 EF 中的存储过程返回 3 个结果集。您需要将存储过程拆分为单独的存储过程,每个存储过程都返回一个结果集(表)。然后你可以得到这些结果

或者,也许您可​​以更改 sproc 以返回一个结果集,该结果集是 3 个 select 语句的 UNION,以便可以读取它们 -

select col1, col2 from table1 UNION
select col1, col2 from table2 UNION
select col1, col2 from table3

编辑

显然它现在支持 EF 5 - 请参阅此处了解信息http://msdn.microsoft.com/en-us/data/jj691402

于 2013-03-05T13:51:46.350 回答