}//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); }
//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); }