Repository.GetElementsByQuery with addin 不适用于自定义 sql 查询
Repository.GetElementsByQuery with addin will not work with custom sql queries
我想运行在我的模型中按名称或首字母缩略词搜索元素
我创建了自定义 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# 插件中使用 Repository.GetElementsByQuery 运行 时,它给我一个错误:
To run a custom search you must specify ea_guid AS CLASSGUID in your select statement
然而,ea_guid和object_type显然存在
- 我尝试使用脚本 API 并且有效
- 搜索运行正确
- 我正在调用正确的模型搜索
这不能用加载项来做吗?有什么原因吗?
模型托管在 SQLServer 上
我正在 运行宁 EA 13 build 1309
编辑:我现在运行宁Repository.SQLQuery作为解决方法
您还没有发布实际给您错误的代码,因此更难看出问题所在。
无论如何,有两种方法可以使用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 文件。
我想运行在我的模型中按名称或首字母缩略词搜索元素
我创建了自定义 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# 插件中使用 Repository.GetElementsByQuery 运行 时,它给我一个错误:
To run a custom search you must specify ea_guid AS CLASSGUID in your select statement
然而,ea_guid和object_type显然存在
- 我尝试使用脚本 API 并且有效
- 搜索运行正确
- 我正在调用正确的模型搜索
这不能用加载项来做吗?有什么原因吗?
模型托管在 SQLServer 上
我正在 运行宁 EA 13 build 1309
编辑:我现在运行宁Repository.SQLQuery作为解决方法
您还没有发布实际给您错误的代码,因此更难看出问题所在。
无论如何,有两种方法可以使用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 文件。