Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Repository.GetElementsByQuery with addin将不适用于自定义sql查询_C#_Sql_Add In_Enterprise Architect - Fatal编程技术网

C# Repository.GetElementsByQuery with addin将不适用于自定义sql查询

C# Repository.GetElementsByQuery with addin将不适用于自定义sql查询,c#,sql,add-in,enterprise-architect,C#,Sql,Add In,Enterprise Architect,我想在我的模型中通过名称或首字母缩略词搜索某个元素 我创建了一个自定义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.Nam

我想在我的模型中通过名称或首字母缩略词搜索某个元素 我创建了一个自定义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运行它时,它会给我一个错误:

要运行自定义搜索,必须在select语句中将ea_guid指定为CLASSGUID

但是,ea_guid和object_类型显然存在

我尝试了脚本API,它很有效 搜索运行正常 我打电话给正确的模型搜索 使用外接程序不可能做到这一点吗?有什么原因吗

模型托管在SQLServer上 我正在运行EA 13 build 1309
编辑:我现在运行Repository.SQLQuery作为一种解决方法

您还没有发布实际导致错误的代码,这使得查看错误变得更加困难

无论如何,有两种方法可以使用GetElementsByQuery

1通过将查询的名称作为参数传递,如下所示:

EA.Repository.GetElementsByQuery("NameOfMySearch",1);
在这种情况下,您不能提供search参数,因此只有当您的搜索不依赖于

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 server,但不适用于.eap文件。

您还没有发布实际导致错误的代码,因此更难看出哪里出了问题

无论如何,有两种方法可以使用GetElementsByQuery

1通过将查询的名称作为参数传递,如下所示:

EA.Repository.GetElementsByQuery("NameOfMySearch",1);
在这种情况下,您不能提供search参数,因此只有当您的搜索不依赖于

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 server,但不适用于.eap文件。

我决定切换到Repository.SQLQuery,因为处理XML文件比处理EA.Collection类型个人首选项更容易。我发布的查询对DBMS存储库和.eap文件都有效。我不知道您不能提供搜索名称为HI的Repository.GetElementsByQuery搜索词Geert,在v14.1中,GetElementsByQuery的签名似乎有所不同,至少在我的机器上是这样的…:集合GetElementsByQuery[MarshalAsUnmanagedType.BStr,in]string QueryName,[MarshalAsUnmanagedType.BStr,in]string SearchTerm;。这样,我可以将查询传递给如下方法:Repository.GetElementsByQueryQueryNames.getInstanceByClassifier,s.ElementID.ToString。你能确认签名的更改吗?还是我遗漏了什么?不,我想一直都是这样,但我的答案是错的。我显然把GetElementSet和GetElementsByQuery搞混了。如果有时间,我会编辑答案。我决定切换到Repository.SQLQuery,因为处理XML文件比处理EA.Collection类型个人首选项更容易。我发布的查询对DBMS存储库和.eap文件都有效。我不知道您不能提供带有搜索名称Hi Geert,在v14.1中,GetElementsByQuery的签名似乎有所不同,至少在我的计算机上是这样的…:集合GetElementsByQuery[MarshalAsUnmanagedType.BStr,in]string QueryName,[MarshalAsUnmanagedType.BStr,in]string SearchTerm;。这样,我可以将查询传递给如下方法:Repository.GetElementsByQueryQueryNames.getInstanceByClassifier,s.ElementID.ToString。你能确认签名的更改吗?还是我遗漏了什么?不,我想一直都是这样,但我的答案是错的。我显然把GetElementSet和GetElementsByQuery搞混了。如果我有时间,我会编辑答案。