diff --git a/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmContext.cs b/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmContext.cs index 48a959c..27b4e3f 100644 --- a/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmContext.cs +++ b/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmContext.cs @@ -8,7 +8,6 @@ // //------------------------------------------------------------------------------ -using DG.XrmContext; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Client; using System; diff --git a/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmExtensions.cs b/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmExtensions.cs index 3a0f1c0..de33be9 100644 --- a/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmExtensions.cs +++ b/XrmOrg/XrmOrg.XrmSolution/BusinessDomain/XrmExtensions.cs @@ -10,12 +10,12 @@ using Microsoft.Xrm.Sdk.Query; using Microsoft.Xrm.Sdk.Messages; -namespace DG.XrmContext +namespace DG.XrmFramework.BusinessDomain.ServiceContext { public enum EmptyEnum { } - public abstract partial class ExtendedEntity : Entity + public abstract partial class ExtendedEntity : Microsoft.Xrm.Sdk.Entity where State : struct, IComparable, IConvertible, IFormattable where Status : struct, IComparable, IConvertible, IFormattable { @@ -115,12 +115,12 @@ protected void SetMoneyValue(string attributeName, decimal? value) } } - protected IEnumerable GetEntityCollection(string attributeName) where T : Entity + protected IEnumerable GetEntityCollection(string attributeName) where T : Microsoft.Xrm.Sdk.Entity { var collection = GetAttributeValue(attributeName); if (collection != null && collection.Entities != null) { - return collection.Entities.Select(x => x as T); + return collection.Entities.Select(x => x.ToEntity()); } else { @@ -128,11 +128,11 @@ protected IEnumerable GetEntityCollection(string attributeName) where T : } } - protected void SetEntityCollection(string attributeName, IEnumerable entities) where T : Entity + protected void SetEntityCollection(string attributeName, IEnumerable entities) where T : Microsoft.Xrm.Sdk.Entity { if (entities != null) { - SetAttributeValue(attributeName, new EntityCollection(new List(entities))); + SetAttributeValue(attributeName, new EntityCollection(new List(entities))); } else { @@ -146,7 +146,6 @@ protected void SetId(string primaryIdAttribute, Guid? guid) SetAttributeValue(primaryIdAttribute, guid); } - protected KeyValuePair[] DeltaAttributes; public void TagForDelta() @@ -168,8 +167,7 @@ public void PerformDelta() if (guid != Guid.Empty) Id = guid; } - - protected static T Retrieve_AltKey(IOrganizationService service, KeyAttributeCollection keys, params Expression>[] attributes) where T : Entity + protected static T Retrieve_AltKey(IOrganizationService service, KeyAttributeCollection keys, params Expression>[] attributes) where T : Microsoft.Xrm.Sdk.Entity { var req = new RetrieveRequest(); req.Target = new EntityReference(Activator.CreateInstance().LogicalName, keys); @@ -183,7 +181,8 @@ protected static T Retrieve_AltKey(IOrganizationService service, KeyAttribute return null; } } - public static string GetColumnName(Expression> lambda) where T : Entity + + public static string GetColumnName(Expression> lambda) where T : Microsoft.Xrm.Sdk.Entity { MemberExpression body = lambda.Body as MemberExpression; @@ -206,7 +205,7 @@ public static string GetColumnName(Expression> lambda) where return body.Member.Name; } - public static T Retrieve(IOrganizationService service, Guid id, params Expression>[] attributes) where T : Entity + public static T Retrieve(IOrganizationService service, Guid id, params Expression>[] attributes) where T : Microsoft.Xrm.Sdk.Entity { return service.Retrieve(id, attributes); } @@ -245,7 +244,7 @@ public interface IEntity string RowVersion { get; set; } bool Contains(string attributeName); T GetAttributeValue(string attributeLogicalName); - T ToEntity() where T : Entity; + T ToEntity() where T : Microsoft.Xrm.Sdk.Entity; EntityReference ToEntityReference(); KeyAttributeCollection KeyAttributes { get; set; } } @@ -255,13 +254,13 @@ public abstract partial class ExtendedOrganizationServiceContext : OrganizationS public ExtendedOrganizationServiceContext(IOrganizationService service) : base(service) { } - public U Load(T entity, Expression> loaderFunc) where T : Entity + public U Load(T entity, Expression> loaderFunc) where T : Microsoft.Xrm.Sdk.Entity { LoadProperty(entity, XrmExtensions.GetAttributeLogicalName(loaderFunc)); return loaderFunc.Compile().Invoke(entity); } - public IEnumerable LoadEnumeration(T entity, Expression>> loaderFunc) where T : Entity + public IEnumerable LoadEnumeration(T entity, Expression>> loaderFunc) where T : Microsoft.Xrm.Sdk.Entity { return Load(entity, loaderFunc) ?? new List(); } @@ -271,12 +270,12 @@ public IEnumerable LoadEnumeration(T entity, Expression(this IOrganizationService service, Guid id, params Expression>[] attributes) where T : Entity + public static T Retrieve(this IOrganizationService service, Guid id, params Expression>[] attributes) where T : Microsoft.Xrm.Sdk.Entity { return service.Retrieve(Activator.CreateInstance().LogicalName, id, GetColumnSet(attributes)).ToEntity(); } - public static UpsertResponse Upsert(this IOrganizationService service, Entity entity) + public static UpsertResponse Upsert(this IOrganizationService service, Microsoft.Xrm.Sdk.Entity entity) { var req = new UpsertRequest() { Target = entity }; var resp = service.Execute(req) as UpsertResponse; @@ -284,7 +283,7 @@ public static UpsertResponse Upsert(this IOrganizationService service, Entity en return resp; } - + public static List PerformAsBulk(this IOrganizationService service, IEnumerable requests, bool continueOnError = true, int chunkSize = 1000) where T : OrganizationRequest { var arr = requests.ToArray(); @@ -332,34 +331,36 @@ public static string GetAttributeLogicalName(Expression> lambda return attributelogicalName.LogicalName; } - public static bool ContainsAttributes(this T entity, params Expression>[] attrGetters) where T : Entity + public static bool ContainsAttributes(this T entity, params Expression>[] attrGetters) where T : Microsoft.Xrm.Sdk.Entity { if (attrGetters == null) return true; return attrGetters.Select(a => GetAttributeLogicalName(a).ToLower()).All(a => entity.Contains(a)); } - public static bool RemoveAttributes(this T entity, params Expression>[] attrGetters) where T : Entity + public static bool RemoveAttributes(this T entity, params Expression>[] attrGetters) where T : Microsoft.Xrm.Sdk.Entity { if (attrGetters == null) return false; return attrGetters.Select(a => GetAttributeLogicalName(a).ToLower()).Any(a => entity.Attributes.Remove(a)); } } - [AttributeUsage(AttributeTargets.Field)] + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] public class OptionSetMetadataAttribute : Attribute { public string Name { get; private set; } public int Index { get; set; } public string Description { get; set; } public string Color { get; set; } + public int Lcid { get; set; } - public OptionSetMetadataAttribute(string name, string description = null, string color = null) : this(name, int.MinValue, description, color) { } - public OptionSetMetadataAttribute(string name, int index, string description = null, string color = null) + public OptionSetMetadataAttribute(string name, int lcid = 1033, string description = null, string color = null) : this(name, int.MinValue, lcid, description, color) { } + public OptionSetMetadataAttribute(string name, int index, int lcid, string description = null, string color = null) { Name = name; Index = index; Description = description; Color = color; + Lcid = lcid; } } } diff --git a/XrmOrg/XrmOrg.XrmSolution/BusinessLogic/Helpers/HelperBusinessDomain.cs b/XrmOrg/XrmOrg.XrmSolution/BusinessLogic/Helpers/HelperBusinessDomain.cs index bc3c2be..c13f449 100644 --- a/XrmOrg/XrmOrg.XrmSolution/BusinessLogic/Helpers/HelperBusinessDomain.cs +++ b/XrmOrg/XrmOrg.XrmSolution/BusinessLogic/Helpers/HelperBusinessDomain.cs @@ -9,7 +9,6 @@ using Microsoft.Xrm.Sdk.Metadata; using Microsoft.Xrm.Sdk.Query; -using DG.XrmContext; using DG.XrmFramework.BusinessDomain.ServiceContext; using HU = DG.XrmFramework.BusinessLogic.Helpers.HelperUtils; diff --git a/XrmOrg/XrmOrg.XrmSolution/Tools/Tools.csproj b/XrmOrg/XrmOrg.XrmSolution/Tools/Tools.csproj index 09f9555..e0d7842 100644 --- a/XrmOrg/XrmOrg.XrmSolution/Tools/Tools.csproj +++ b/XrmOrg/XrmOrg.XrmSolution/Tools/Tools.csproj @@ -141,8 +141,8 @@ ..\packages\XMLDiffPatch.1.0.8.28\lib\net\XmlDiffPatch.View.dll - - ..\packages\Delegate.XrmContext.2.0.1\lib\net462\XrmContext.exe + + ..\packages\Delegate.XrmContext.3.0.1\lib\net462\XrmContext.exe ..\packages\Delegate.XrmDefinitelyTyped.5.5.0\lib\net462\XrmDefinitelyTyped.exe diff --git a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/System.ValueTuple.dll b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/System.ValueTuple.dll index b7cb4f7..78a1851 100644 Binary files a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/System.ValueTuple.dll and b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/System.ValueTuple.dll differ diff --git a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.exe b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.exe index 95bef9b..9ff6c65 100644 Binary files a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.exe and b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.exe differ diff --git a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.xml b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.xml index 715eced..2e1daea 100644 --- a/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.xml +++ b/XrmOrg/XrmOrg.XrmSolution/Tools/XrmContext/XrmContext.xml @@ -57,7 +57,7 @@ Use argument and pass it along - + Interprets CRM OptionSetMetadata into intermediate type diff --git a/XrmOrg/XrmOrg.XrmSolution/Tools/packages.config b/XrmOrg/XrmOrg.XrmSolution/Tools/packages.config index 595725d..a0c17ad 100644 --- a/XrmOrg/XrmOrg.XrmSolution/Tools/packages.config +++ b/XrmOrg/XrmOrg.XrmSolution/Tools/packages.config @@ -2,7 +2,7 @@ - +