从Entity Framework 3.5调用存储过程

时间:2012-03-02 17:58:18

标签: entity-framework

我正在使用VS 2010& EF 3.5。我已经导入了一个存储过程,它使用Function Import功能返回一个guid列表。如何在我的代码中调用它?在实例化{{ 1}},intellisense不会显示我导入的程序。我知道在EF 4.0中这很容易,但是我在这个项目中遇到了EF 3.5。任何有关如何解决这个问题的想法,除了做旧 - 老式的方式?

1 个答案:

答案 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;
    }