2011-12-14 45 views
0

我有一个存储过程递归抓取数据。我在我的实体集中做了一个函数导入。我可以在我的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联接没有得到一个错误。有没有办法告诉实体框架在我访问实体时使用存储过程?我希望我的存储过程随时可用我为该实体获取数据。此外,我希望它能够与连接一起工作。实体框架是否支持这种类型的存储过程到表映射?否则,有没有办法加入一个函数导入?

回答

0

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