entity framework 4 POCO de procédure stockée erreur “Le FunctionImport n'a pas pu être trouvé dans le conteneur”
Entity Framework avec POCO Entités générées par le modèle T4. Ajout de la Fonction d'Importation nommé "procFindNumber", a précisé complexes collection nommée "NumberResult".
Voici ce que vous avez généré dans le Contexte.cs fichier:
public ObjectResult<NumberResult> procFindNumber(string lookupvalue)
{
ObjectParameter lookupvalueParameter;
if (lookupvalue != null)
{
lookupvalueParameter = new ObjectParameter("lookupvalue", lookupvalue);
}
else
{
lookupvalueParameter = new ObjectParameter("lookupvalue", typeof(string));
}
return base.ExecuteFunction<NumberResult>("procFindNumber", lookupvalueParameter);
}
Voici la procédure stockée:
ALTER PROCEDURE [dbo].[procFindNumber]
@lookupvalue varchar(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar(MAX);
IF @lookupvalue IS NOT NULL AND @lookupvalue <> ''
BEGIN
SELECT @sql = 'SELECT dbo.HBM_CLIENT.CLIENT_CODE, dbo.HBM_MATTER.MATTER_NAME, dbo.HBM_MATTER.CLIENT_MAT_NAME
FROM dbo.HBM_MATTER INNER JOIN dbo.HBM_CLIENT ON dbo.HBM_MATTER.CLIENT_CODE = dbo.HBM_CLIENT.CLIENT_CODE
LEFT OUTER JOIN dbo.HBL_CLNT_CAT ON dbo.HBM_CLIENT.CLNT_CAT_CODE = dbo.HBL_CLNT_CAT.CLNT_CAT_CODE
LEFT OUTER JOIN dbo.HBL_CLNT_TYPE ON dbo.HBM_CLIENT.CLNT_TYPE_CODE = dbo.HBL_CLNT_TYPE.CLNT_TYPE_CODE
WHERE (LTRIM(RTRIM(dbo.HBM_MATTER.CLIENT_CODE)) <> '''')'
SELECT @sql = @sql + ' AND (dbo.HBM_MATTER.MATTER_NAME like ''%' + @lookupvalue + '%'')'
SELECT @sql = @sql + ' OR (dbo.HBM_MATTER.CLIENT_MAT_NAME like ''%' + @lookupvalue + '%'')'
SELECT @sql = @sql + ' ORDER BY dbo.HBM_MATTER.MATTER_NAME'
-- Execute the SQL query
EXEC sp_executesql @sql
END
END
Dans mon service WCF j'essaie d'exécuter la procédure stockée:
[WebGet(UriTemplate = "number/{value}/?format={format}")]
public IEnumerable<NumberResult> GetNumber(string value, string format)
{
if (string.Equals("json", format, StringComparison.OrdinalIgnoreCase))
{
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
}
using (var ctx = new MyEntities())
{
ctx.ContextOptions.ProxyCreationEnabled = false;
var results = ctx.procFindNumber(value);
return results.ToList();
}
}
Message d'erreur dit "Le FunctionImport ... n'a pas pu être trouvé dans le conteneur ..."
Ce que je fais mal?
OriginalL'auteur dm80 | 2011-02-03
Vous devez vous connecter pour publier un commentaire.
Vous devez qualifier la fonction d'importation avec le nom de conteneur.
E. g changer cela:
:
L'entité nom de conteneur se trouve sur votre EDMX - faites un clic droit n'importe où et faire "Propriétés".
no problemo....
OriginalL'auteur RPM1984
J'ai eu un problème similaire avec EF 4.1... et a constaté que j'avais ce problème lorsque le code est exécuté en mode Release. En mode Debug, il fonctionne très bien.
OriginalL'auteur Glen Little