/// <summary> /// Returns object1 from a link table entity given a Ria services change set and a find method. /// </summary> /// <typeparam name="TObject1"></typeparam> /// <typeparam name="TObject2"></typeparam> /// <param name="linkTableEntity"></param> /// <param name="changeSet"></param> /// <param name="find">function to find and retrieve an entity in a repository.</param> /// <returns></returns> public static TObject1 FetchObject1 <TObject1, TObject2>( this LinkTable <TObject1, TObject2> linkTableEntity, ChangeSet changeSet, Func <object[], TObject1> find) where TObject1 : class where TObject2 : class { var properties = TypeDescriptor.GetProperties(linkTableEntity.GetType()); var navProp = properties["Object1"]; var associationAttribute = navProp.Attributes.OfType <AssociationAttribute>().SingleOrDefault(); return(Find( linkTableEntity, linkTableEntity.Object1, changeSet, find, associationAttribute)); }
/// <summary> /// Returns object1 from a link table entity given a Ria services change set and an EntityFramework DbContext. /// </summary> /// <typeparam name="TObject1"></typeparam> /// <typeparam name="TObject2"></typeparam> /// <param name="linkTableEntity"></param> /// <param name="changeSet"></param> /// <param name="dbContext"></param> /// <returns></returns> public static TObject1 FetchObject1 <TObject1, TObject2>( this LinkTable <TObject1, TObject2> linkTableEntity, ChangeSet changeSet, System.Data.Entity.DbContext dbContext) where TObject1 : class where TObject2 : class { var properties = TypeDescriptor.GetProperties(linkTableEntity.GetType()); var navProp = properties["Object1"]; var associationAttribute = navProp.Attributes.OfType <AssociationAttribute>().SingleOrDefault(); return(Find( linkTableEntity, linkTableEntity.Object1, changeSet, keys => dbContext.Set <TObject1>().Find(keys), associationAttribute)); }