Skip to content

Commit

Permalink
Add conditional compilation for latest early bound generated types fr…
Browse files Browse the repository at this point in the history
…om modelbuilder as MultiOption set don't exist in previous versions
  • Loading branch information
jordimontana82 committed Mar 12, 2024
1 parent a81b180 commit fc54ae5
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 44 deletions.
2 changes: 2 additions & 0 deletions tests/DataverseEntities/Entities/dv_test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,7 @@ public string dv_boolName
}
}

#if FAKE_XRM_EASY_9
[Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("dv_choice_multiple")]
public virtual System.Collections.Generic.IEnumerable<dv_test_dv_choice_multiple> dv_choice_multiple
{
Expand All @@ -359,6 +360,7 @@ public virtual System.Collections.Generic.IEnumerable<dv_test_dv_choice_multiple
this.SetAttributeValue("dv_choice_multiple", EntityOptionSetEnum.GetMultiEnum(this, "dv_choice_multiple", value));
}
}
#endif

[Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("dv_choice_multiplename")]
public string dv_choice_multipleName
Expand Down
93 changes: 49 additions & 44 deletions tests/DataverseEntities/EntityOptionSetEnum.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
Expand All @@ -13,49 +12,55 @@ namespace DataverseEntities
{


internal sealed class EntityOptionSetEnum
{
internal sealed class EntityOptionSetEnum
{

public static System.Nullable<int> GetEnum(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName)
{
if (entity.Attributes.ContainsKey(attributeLogicalName))
{
Microsoft.Xrm.Sdk.OptionSetValue value = entity.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValue>(attributeLogicalName);
if (value != null)
{
return value.Value;
}
}
return null;
}

#if FAKE_XRM_EASY_9
public static System.Collections.Generic.IEnumerable<T> GetMultiEnum<T>(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName)

{
Microsoft.Xrm.Sdk.OptionSetValueCollection value = entity.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValueCollection>(attributeLogicalName);
System.Collections.Generic.List<T> list = new System.Collections.Generic.List<T>();
if (value == null)
{
return list;
}
list.AddRange(System.Linq.Enumerable.Select(value, v => (T)(object)v.Value));
return list;
}

public static Microsoft.Xrm.Sdk.OptionSetValueCollection GetMultiEnum<T>(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName, System.Collections.Generic.IEnumerable<T> values)
/// <summary>
/// Returns the integer version of an OptionSetValue
/// </summary>
public static System.Nullable<int> GetEnum(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName)
{
if (entity.Attributes.ContainsKey(attributeLogicalName))
{
Microsoft.Xrm.Sdk.OptionSetValue value = entity.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValue>(attributeLogicalName);
if (value != null)
{
return value.Value;
}
}
return null;
}

#if FAKE_XRM_EASY_9
/// <summary>
/// Returns a collection of integer version's of an Multi-Select OptionSetValue for a given attribute on the passed entity
/// </summary>
public static System.Collections.Generic.IEnumerable<T> GetMultiEnum<T>(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName)
{
Microsoft.Xrm.Sdk.OptionSetValueCollection value = entity.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValueCollection>(attributeLogicalName);
System.Collections.Generic.List<T> list = new System.Collections.Generic.List<T>();
if (value == null)
{
return list;
}
list.AddRange(System.Linq.Enumerable.Select(value, v => (T)(object)v.Value));
return list;
}

{
if (values == null)
{
return null;
}
Microsoft.Xrm.Sdk.OptionSetValueCollection collection = new Microsoft.Xrm.Sdk.OptionSetValueCollection();
collection.AddRange(System.Linq.Enumerable.Select(values, v => new Microsoft.Xrm.Sdk.OptionSetValue((int)(object)v)));
return collection;
}
#endif

}
/// <summary>
/// Returns a OptionSetValueCollection based on a list of Multi-Select OptionSetValues
/// </summary>
public static Microsoft.Xrm.Sdk.OptionSetValueCollection GetMultiEnum<T>(Microsoft.Xrm.Sdk.Entity entity, string attributeLogicalName, System.Collections.Generic.IEnumerable<T> values)
{
if (values == null)
{
return null;
}
Microsoft.Xrm.Sdk.OptionSetValueCollection collection = new Microsoft.Xrm.Sdk.OptionSetValueCollection();
collection.AddRange(System.Linq.Enumerable.Select(values, v => new Microsoft.Xrm.Sdk.OptionSetValue((int)(object)v)));
return collection;
}
#endif
}
}
#pragma warning restore CS1591
#pragma warning restore CS1591

0 comments on commit fc54ae5

Please sign in to comment.