我想在我的模型中按名称或首字母缩写词来搜索元素 我已经创建了一个自定义的sql搜索,这里是sql:
select ea_guid AS CLASSGUID, object_type AS CLASSTYPE from t_object
where t_object.Name = '#WC#(<Search Term>)#WC#'
or t_object.Name = '<Search Term>'
or t_object.Alias = '<Search Term>'
当我尝试在我的c#addin中使用Repository.GetElementsByQuery运行它时,它给了我一个错误:
要运行自定义搜索,您必须在select语句中指定ea_guid AS CLASSGUID
然而,ea_guid和object_type显然是
加载项无法实现这一点吗?有什么理由吗?
该模型托管在SQLServer上
我正在运行EA 13 build 1309
编辑:我现在正在运行Repository.SQLQuery作为解决方法
答案 0 :(得分:4)
你还没有发布实际上给你错误的代码,因此很难看出出现了什么问题。
无论如何,有两种方法可以使用GetElementsByQuery()
1)将查询的名称作为参数传递,如:
EA.Repository.GetElementsByQuery("NameOfMySearch",1);
在这种情况下,您无法提供搜索参数,因此仅当您的搜索不依赖于<Search Term>
2)通过传递实际的SQL代码方法。在你的情况下,这将是:
string mySearchTerm = "somethingImLookingFor";
string SQLSearchString = @"select ea_guid AS CLASSGUID, object_type AS CLASSTYPE from t_object
where t_object.Name = '%" + mySearchTerm +@ "%'
or t_object.Alias = '" + mySearchTerm + "'";
var foundElements = Repository.GetElementsByQuery(SQLSearchString ,2);
这种情况下的第二个参数需要为“2”。第二种方法是我总是使用此操作的方式。
还要注意使用正确的SQL语法,具体取决于您使用的后端。这适用于SQL服务器,但不适用于.eap文件。