3

I ont une fonction scalaire:Entity Framework mappage de fonction scalaire

CREATE FUNCTION [dbo].[CheckLocation] 
(
    @locationId Int 
) 
RETURNS bit 
AS 
BEGIN 
    //code 
END 

Je veux l'utiliser dans le contexte Entity Framework.

J'ai ajouté ce dans le fichier * .edmx:

<Function Name="CheckLocation" ReturnType="bit" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" > 
<Parameter Name="locationId" Type="int" Mode="In" /> 
</Function> 

J'ai aussi créé une classe partielle avec la méthode décorée avec EdmFunctionAttribute:

public partial class MainModelContainer 
{ 
    [EdmFunction("MainModel.Store", "CheckLocation")] 
    public bool CheckLocation(int locationId) 
    { 
     throw new NotSupportedException("Direct calls not supported"); 
    } 
} 

J'essaie d'utiliser cette fonction comme celui-ci :

Context.CheckLocation(locationId); 

Et obtenir NotSupportedException ("direct appels non pris en charge"). Cela fonctionne dans la méthode Select, mais cela ne me convient pas. Aidez s'il vous plaît! Comment puis-je appeler cette fonction sans méthode select?

Répondre

2

vous devez y accéder en tant que sélection

var students = context.Locations 
    .Select (new { location= CheckLocation(locationId)}): 
+0

Est-ce possible d'utiliser des FDU pas dans le produit dans l'EF 4.5? – DeeRain

+0

vous devriez pouvoir l'utiliser dans une clause .Where aussi – Brian

Questions connexes