/// <summary> /// /// </summary> /// <param name="providerAttributes"></param> /// <returns>True if a new provider is saved; False if an existing one is found</returns> internal static bool TrySaveProvider(ProviderDescriptionAttribute providerAttributes, out int internalId) { using (RuntimeEntityModel context = RuntimeEntityModel.CreateInstance()) { var providerQuery = from p in context.RTProviderSet where p.ReferenceName.Equals(providerAttributes.Id) && p.FriendlyName.Equals(providerAttributes.Name) && (p.ProviderVersion.Equals(providerAttributes.Version) || string.IsNullOrEmpty(p.ProviderVersion)) select p; if (providerQuery.Count() > 0) { RTProvider existingProvider = providerQuery.First(); internalId = existingProvider.Id; if (string.IsNullOrEmpty(existingProvider.ProviderVersion)) { // this is possible in older version of the toolkit // we need to fill up the missing info and assume that the provider was not in DB existingProvider.ProviderVersion = providerAttributes.Version; context.TrySaveChanges(); return(true); } else { return(false); } } RTProvider rtProvider = RTProvider.CreateRTProvider(0, providerAttributes.Id, providerAttributes.Name); rtProvider.ProviderVersion = providerAttributes.Version; context.AddToRTProviderSet(rtProvider); context.TrySaveChanges(); internalId = rtProvider.Id; return(true); } }