【发布时间】:2019-09-27 12:56:38
【问题描述】:
我有一个简单的数据库函数,它需要两个字符串作为参数并返回一个字符串。我想将此与实体框架进行映射。类似于this question,我创建了一个简单的函数头:
[DbFunction("dbo", "StripCharacters")]
public static string StripCharacters(string input, string pattern = "^A-Z0-9") => throw new NotSupportedException();
就像在链接的帖子中一样,一旦我尝试在我的一个查询中使用此方法,我就会收到相同的错误消息。异常消息是:
DE.ZA.TrailerLoadingAssistant.Web.Models.DatabaseEntities类型中的方法System.String StripCharacters(System.String, System.String)无法转换为 LINQ to Entities 存储表达式
await mapi.db.TrailerAutocompleteHelpers
.Where(t => t.SearchString.Contains(DatabaseEntities.StripCharacters(userInput, "^A-Z0-9")))
.ToListAsync();
这是数据库函数:
CREATE FUNCTION [dbo].[StripCharacters]
(
@String NVARCHAR(MAX),
@MatchExpression VARCHAR(255)
)
RETURNS NVARCHAR(MAX) WITH SCHEMABINDING
AS
BEGIN
SET @MatchExpression = '%['+@MatchExpression+']%'
WHILE PatIndex(@MatchExpression, @String) > 0
SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, '')
RETURN @String
END
我该如何解决这个问题?
【问题讨论】:
标签: c# entity-framework-6