<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Check if feature class/table has a relationship and return it pro sdk in ArcGIS Pro SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016106#M5984</link>
    <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/12083"&gt;@NobbirAhmed&lt;/a&gt;&amp;nbsp;&amp;nbsp;Can you actually use this python code in C#?&lt;/P&gt;</description>
    <pubDate>Tue, 12 Jan 2021 20:05:37 GMT</pubDate>
    <dc:creator>MarvisKisakye1</dc:creator>
    <dc:date>2021-01-12T20:05:37Z</dc:date>
    <item>
      <title>Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016069#M5980</link>
      <description>&lt;P&gt;Is there a way to check if a feature class/table has a relationship and if so, to return that relationship for further processing?&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/9021"&gt;@UmaHarano&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/12882"&gt;@Wolf&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/114916"&gt;@RichRuh&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/12083"&gt;@NobbirAhmed&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 18:53:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016069#M5980</guid>
      <dc:creator>MarvisKisakye1</dc:creator>
      <dc:date>2021-01-12T18:53:15Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016075#M5981</link>
      <description>&lt;P&gt;You can take a look at this ProSnippet:&amp;nbsp;&amp;nbsp;&lt;A href="https://github.com/Esri/arcgis-pro-sdk/wiki/ProSnippets-Geodatabase#obtaining-related-definitions-from-geodatabase" target="_self"&gt;https://github.com/Esri/arcgis-pro-sdk/wiki/ProSnippets-Geodatabase#obtaining-related-definitions-from-geodatabase&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 19:07:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016075#M5981</guid>
      <dc:creator>Wolf</dc:creator>
      <dc:date>2021-01-12T19:07:09Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016081#M5982</link>
      <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/12882"&gt;@Wolf&lt;/a&gt;&amp;nbsp; I see this line&amp;nbsp;&lt;/P&gt;&lt;PRE&gt; &lt;SPAN class="pl-en"&gt;RelationshipClassDefinition&lt;/SPAN&gt; &lt;SPAN class="pl-smi"&gt;enterpriseDefinition&lt;/SPAN&gt; &lt;SPAN class="pl-k"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pl-smi"&gt;geodatabase&lt;/SPAN&gt;.&lt;SPAN class="pl-en"&gt;GetDefinition&lt;/SPAN&gt;&amp;lt;&lt;SPAN class="pl-en"&gt;RelationshipClassDefinition&lt;/SPAN&gt;&amp;gt;(&lt;SPAN class="pl-s"&gt;&lt;SPAN class="pl-pds"&gt;"&lt;/SPAN&gt;LocalGovernment.GDB.AddressPointHasSiteAddresses&lt;SPAN class="pl-pds"&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;P&gt;but in my case I don't have the name of the relationship class. I just have the feature class that has the relationship. The link you sent I believe requires that you have the name of the&amp;nbsp; relationship class.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 19:20:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016081#M5982</guid>
      <dc:creator>MarvisKisakye1</dc:creator>
      <dc:date>2021-01-12T19:20:33Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016092#M5983</link>
      <description>&lt;P&gt;In Python (@Wolf - it would be great if you can translate the python syntax into C#). I'll also try.&lt;/P&gt;&lt;P&gt;d = arcpy.Descrbibe("input_data")&lt;/P&gt;&lt;P&gt;relation_class = d.relationshipClassNames&lt;/P&gt;&lt;P&gt;# returns relationship class(es) the dataset participate in&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 19:45:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016092#M5983</guid>
      <dc:creator>NobbirAhmed</dc:creator>
      <dc:date>2021-01-12T19:45:34Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016106#M5984</link>
      <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/12083"&gt;@NobbirAhmed&lt;/a&gt;&amp;nbsp;&amp;nbsp;Can you actually use this python code in C#?&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 20:05:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016106#M5984</guid>
      <dc:creator>MarvisKisakye1</dc:creator>
      <dc:date>2021-01-12T20:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016107#M5985</link>
      <description>&lt;P&gt;No - we cannot use python code in C# "as is" - this is just for an idea. If Python has the ability to read - I'm hopefull C# SDK might have a way. Let's wait for Wolf's response.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 20:08:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016107#M5985</guid>
      <dc:creator>NobbirAhmed</dc:creator>
      <dc:date>2021-01-12T20:08:33Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016113#M5986</link>
      <description>&lt;P&gt;This works for me&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;public static void TestGetRelates()
{
    foreach (var def in GetRelates(@"E:\some.gdb", "somefeatclass"))
    {
        Debug.Print($"{def.GetName()} {def.GetOriginClass()} {def.GetDestinationClass()}");
    }
}
public static IEnumerable&amp;lt;RelationshipClassDefinition&amp;gt; GetRelates(string fgdbPath, string fcName)
{
    using (var gdb = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(fgdbPath))))
    {
        return gdb.GetDefinitions&amp;lt;RelationshipClassDefinition&amp;gt;()
        .Where(
            def =&amp;gt; def.GetOriginClass().Trim().ToUpper() == fcName.Trim().ToUpper()
            || def.GetDestinationClass().Trim().ToUpper() == fcName.Trim().ToUpper());
    }
}&lt;/LI-CODE&gt;</description>
      <pubDate>Tue, 12 Jan 2021 20:30:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016113#M5986</guid>
      <dc:creator>KirkKuykendall1</dc:creator>
      <dc:date>2021-01-12T20:30:40Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016135#M5987</link>
      <description>&lt;P&gt;Sorry I about the delayed response, I didn't have enough time earlier to reply with a more general code snippet so I just posted the link real quick, but I see from your post above that you figured it out in the meantime.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Jan 2021 21:07:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1016135#M5987</guid>
      <dc:creator>Wolf</dc:creator>
      <dc:date>2021-01-12T21:07:17Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1018185#M6027</link>
      <description>&lt;P&gt;In addition to calling&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;gdb.GetDefinitions&amp;lt;RelationshipClassDefinition&amp;gt;()&lt;/LI-CODE&gt;&lt;P&gt;you should also call&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;gdb.GetDefinitions&amp;lt;AttributedRelationshipClassDefinition&amp;gt;()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--Rich&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2021 23:52:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1018185#M6027</guid>
      <dc:creator>RichRuh</dc:creator>
      <dc:date>2021-01-19T23:52:43Z</dc:date>
    </item>
    <item>
      <title>Re: Check if feature class/table has a relationship and return it pro sdk</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1018378#M6029</link>
      <description>&lt;P&gt;Oops ... I completely forgot that &lt;A href="https://pro.arcgis.com/en/pro-app/latest/sdk/api-reference/#topic7096.html" target="_self"&gt;GetDefinitions&lt;/A&gt; isn't &lt;A href="https://en.wikipedia.org/wiki/SOLID" target="_self"&gt;SOLID -&lt;/A&gt;&amp;nbsp;it doesn't honor&lt;A href="https://en.wikipedia.org/wiki/Liskov_substitution_principle" target="_self"&gt; Liskov substitution&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example, Geodatabase.GetDefinitions&amp;lt;Definition&amp;gt;() compiles, but raises a run-time exception:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;"This type of geodatabase (LocalDatabase) does not currently support definition of type Definition.'"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="KirkKuykendall1_0-1611160295105.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/4162i629CD66909D83C9C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="KirkKuykendall1_0-1611160295105.png" alt="KirkKuykendall1_0-1611160295105.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code below works with both attributed and regular relationshipclass definitions.&amp;nbsp; If Esri ever introduces another relationship type that's a subclass of RelationshipClassDefinition, this code will need to be modified.&amp;nbsp; (Thanks&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/114916"&gt;@RichRuh&lt;/a&gt;&amp;nbsp;!)&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;public static class ExtensionMethods
{
    public static IEnumerable&amp;lt;RelationshipClassDefinition&amp;gt; 
            GetRelates(this Geodatabase gdb, string fcName)
    {
        return gdb.GetDefinitions&amp;lt;RelationshipClassDefinition&amp;gt;()
        .Where(def =&amp;gt; def.Involves(fcName))
        .Concat(gdb.GetDefinitions&amp;lt;AttributedRelationshipClassDefinition&amp;gt;())
        .Where(def =&amp;gt; def.Involves(fcName));
    }
    public static bool Involves(this RelationshipClassDefinition def1, string fcName)
    {
        return def1.GetDestinationClass().CIEquals(fcName) 
                || def1.GetOriginClass().CIEquals(fcName);
    }
    public static bool CIEquals(this string s1, string s2)
    {
        return s1.Trim().Equals(s2.Trim(),StringComparison.OrdinalIgnoreCase);
    }
}

public static void TestGetRelates()
{
    string fgdbPath = @"E:\somedatabase.gdb";
    string fcName = " someTable ";
    using (var gdb = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(fgdbPath))))
    {
        foreach(var def in gdb.GetRelates(fcName))
        {
            Debug.Print($"{def.GetName()} {def.GetOriginClass()} {def.GetDestinationClass()}");
        }
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jan 2021 16:37:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/check-if-feature-class-table-has-a-relationship/m-p/1018378#M6029</guid>
      <dc:creator>KirkKuykendall1</dc:creator>
      <dc:date>2021-01-20T16:37:55Z</dc:date>
    </item>
  </channel>
</rss>

