我有一个以递归方式抓取数据的存储过程。我在我的实体集中进行了函数导入。我可以在我的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是否支持这种类型的存储过程到表映射?否则,有没有办法加入函数导入?
答案 0 :(得分:0)
您的要求都不可能。每次查询数据时,都无法告诉EF使用存储过程。您必须手动调用GetProviderAccountSettings
来调用存储过程。使用存储过程时也不能使用join(在数据库端)(甚至在SQL中也不可能)。如果需要将任何数据连接到存储过程的结果集,则必须直接在过程中完成并作为结果集返回。否则,您必须单独执行存储过程并加入查询,并将它们连接到linq-to-objects。