}//method

        object GetValue(EntityRecord record, EntityMemberInfo member)
        {
            var v = record.GetValueDirect(member);

            if (v != null)
            {
                if (v == DBNull.Value)
                {
                    return(null);
                }
                var rec = (EntityRecord)v;
                return(rec.EntityInstance);
            }
            //retrieve entity
            var targetPk  = EntityKey.CreateSafe(_targetEntity.PrimaryKey, record.PrimaryKey.Values);
            var targetRec = record.Session.GetRecord(targetPk);

            if (targetRec == null)
            {
                record.SetValueDirect(member, DBNull.Value);
                return(null);
            }
            record.SetValueDirect(member, targetRec);
            if (targetRec.ByRefUserPermissions == null)
            {
                targetRec.ByRefUserPermissions = member.ByRefPermissions;
            }
            return(targetRec.EntityInstance);
        }
Example #2
0
        //Helper method that can be used to create composite primary keys
        /// <summary>Creates a primary key object for an entity identified by type. Use it for entity types with composite primary key, to create a key instance from
        /// column values. The created key may be used in session.GetEntity() method as primary key parameter. </summary>
        /// <typeparam name="TEntity">Entity type.</typeparam>
        /// <param name="session">The entity session.</param>
        /// <param name="values">Value(s) of the primary key columns.</param>
        /// <returns>A primary key object.</returns>
        public static EntityKey CreatePrimaryKey <TEntity>(this IEntitySession session, params object[] values)
        {
            var entSession = session as EntitySession;
            var modelInfo  = entSession.Context.App.Model;
            var entInfo    = modelInfo.GetEntityInfo(typeof(TEntity), true);
            var key        = EntityKey.CreateSafe(entInfo.PrimaryKey, values);

            return(key);
        }