Сопоставить результат хранимой процедуры с Entity Framework - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть следующий (упрощенный) дизайн БД:

  • Object
  • UserRight
  • GroupRight

В основном я хочу установить UserRights и / или GroupRights на Objects. UserRights должен быть сильнее, чем GroupRights. Другими словами: если установлен UserRight, то GroupRights игнорируются.

Я решил эту проблему с помощью представлений SQL и одной хранимой процедуры, но я не могу использовать результат в C #.

Хранимая процедура выглядит следующим образом и добавляется в файл EDMX Visual Studio 2010.

<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" />

Я получаю следующее сообщение об ошибке:

Тип возврата 'DAL.Object' для функции 'GetAuthorizedObjects' Абстрактно и не может быть отображено неявно.

У кого-нибудь есть предложение, как решить проблему по-другому, если подход с хранимой процедурой невозможен?

...