我正在使用VS 2010和EF 3.5。我使用“Function Import”功能导入了一个返回GUID列表的存储过程。如何在我的代码中调用它?在实例化“dbcontext”之后,智能感知不会显示我导入的存储过程。我知道在EF 4.0中很容易,但是在这个项目中我被困在EF 3.5上。有什么其他方法可以绕过这个问题而不是使用老式的方法吗?
我认为EF 4之前的版本无法使用不返回实体的导入存储过程。也就是说,您的存储过程必须返回完整的实体对象,以便EF可以使用它。由于您的过程只返回GUID列表,EF不知道如何使用它。
您可以将以下内容放入数据上下文类中的部分代码中来调用该过程:
public IEnumerable<Guid> GetMyGUIDs()
{
if (this.Connection.State != System.Data.ConnectionState.Open)
this.Connection.Open();
var command = new System.Data.EntityClient.EntityCommand
{
CommandType = System.Data.CommandType.StoredProcedure,
CommandText = @"YourContext.YourProcedureName",
Connection = (System.Data.EntityClient.EntityConnection)this.Connection
};
var list = new List<Guid>();
using (var reader = command.ExecuteReader())
{
// get GUID values from the reader here,
// and put them in the list
reader.Close();
}
return list;
}