使用实体框架加入存储过程

时间:2011-12-14 19:24:30

标签: entity-framework stored-procedures join recursive-query

我有一个以递归方式抓取数据的存储过程。我在我的实体集中进行了函数导入。我可以在我的ObjectContext中创建一个如下所示的函数:

public ObjectResult<ProviderAccountSetting> GetProviderAccountSettings(long providerAccountId)
{
    string functionName = "MyContainer.GetProviderAccountSettings";
    ObjectParameter providerAccountIdParameter = new ObjectParameter("providerAccountId", providerAccountId);
    ObjectResult<ProviderAccountSetting> results = context.ExecuteFunction<ProviderAccountSetting>(functionName, providerAccountIdParameter);
    return results;
}

但是,如果没有出现错误,我无法使用LINQ执行连接。有没有办法告诉Entity Framework每次访问实体时都使用存储过程?我希望我的存储过程可以随时使用我为该实体获取数据。此外,我希望它与连接一起使用。 Entity Framework是否支持这种类型的存储过程到表映射?否则,有没有办法加入函数导入?

1 个答案:

答案 0 :(得分:0)

您的要求都不可能。每次查询数据时,都无法告诉EF使用存储过程。您必须手动调用GetProviderAccountSettings来调用存储过程。使用存储过程时也不能使用join(在数据库端)(甚至在SQL中也不可能)。如果需要将任何数据连接到存储过程的结果集,则必须直接在过程中完成并作为结果集返回。否则,您必须单独执行存储过程并加入查询,并将它们连接到linq-to-objects。