将存储过程的结果映射到Entity Framework

时间:2012-02-28 08:42:16

标签: c# stored-procedures entity-framework-4 sql-view

我有以下(简化)数据库设计:

  • 对象
  • UserRight
  • GroupRight

基本上我想在UserRights上设置GroupRights和/或ObjectsUserRights应该强于GroupRights。换句话说:如果设置了UserRight,则会忽略GroupRights

我用SQL视图和一个存储过程解决了这个问题,但我无法在C#中使用结果。

存储过程如下所示,并添加到Visual Studio 2010的EDMX文件中。

<Function Name="UDF_GetAuthorizedObjects" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
    <CommandText>
        select * from Objects
        where exists (select * from V_GetEffectiveObjectRights where 
        UserId = @userId and RightValue = @neededRightId and Objects.Id = ObjectId)
    </CommandText>
    <Parameter Name="userId" Type="int"></Parameter>
    <Parameter Name="neededRightId" Type="int"></Parameter>
</Function>

FunctionImport:

<FunctionImport Name="GetAuthorizedObjects" EntitySet="Objects" ReturnType="Collection(DAL.Object)">
    <Parameter Name="userId" Type="Int32" Mode="In" />
    <Parameter Name="neededRightId" Type="Int32" Mode="In" />
</FunctionImport>

FunctionImportMapping:

<FunctionImportMapping FunctionImportName="GetAuthorizedObjects" FunctionName="VSD.Core.DAL.Store.UDF_GetAuthorizedObjects" />

我得到的是以下错误消息:

  

函数'GetAuthorizedObjects'的返回类型'DAL.Object'是   摘要并不能隐式映射。

如果无法使用存储过程的方法,是否有人建议如何以不同方式解决问题?

0 个答案:

没有答案