尝试从存储过程读取多列实体结果集时出现问题

Bog*_*_Ch 4 c# sql-server stored-procedures entity-framework

我们使用EF5.0和MS SQL Server的代码优先方法我已经阅读了一篇文章 http://msdn.microsoft.com/en-us/data/jj691402.aspx

并决定在我们的数据库上尝试相同的方法

但是,假设我的商店程序包含这样的查询

SELECT * from [dbo].[MyEntities] as MyEntity
    where ID = @ID
Run Code Online (Sandbox Code Playgroud)

和C#中的代码是

var entities = Context.ObjectContext.Translate<MyEntity>(reader, "MyEntity", MergeOption.AppendOnly);
Run Code Online (Sandbox Code Playgroud)

我正在这一点上

System.Data.Entity.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

其他信息:找不到EntitySet名称"MyDbContext.MyEntity".

因此,显然它添加了一些上下文名称作为EntitySet名称的前缀,而不是MyEntity在结果集中查找MyDbContext.MyEntity.

导致此行为的原因以及是否存在任何workaroud(因为在上面引用的示例中,它看起来非常简单且不需要特定的操作,除了调用db.Database.Initialize(force:false);(我在我的代码中执行)以及)

Bas*_*Akl 6

我有相同的例外,即使我在选择函数中没有使用别名.我最后通过只传递阅读器来使用Translate的重载方法.我已经知道了select函数的顺序,所以我不需要传递EntitySet名称.

var entities_1 = Context.ObjectContext.Translate<MyEntity_1>(reader);
reader.NextResult();
var entities_2 = Context.ObjectContext.Translate<MyEntity_2>(reader);
Run Code Online (Sandbox Code Playgroud)