我正在使用VS 2010& EF 3.5。我已经导入了一个存储过程,它使用Function Import
功能返回一个guid列表。如何在我的代码中调用它?在实例化{{ 1}},intellisense不会显示我导入的程序。我知道在EF 4.0中这很容易,但是我在这个项目中遇到了EF 3.5。任何有关如何解决这个问题的想法,除了做旧 - 老式的方式?
答案 0 :(得分:4)
我认为4之前的EF版本不能使用不返回实体的导入存储过程。也就是说,您的存储过程必须返回一个完整的实体对象,以便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;
}