public static object GetSimpleValue(EntityRecord record, EntityMemberInfo member)
 {
     var value = record.GetValueDirect(member);
       if (value == null && record.Status != EntityStatus.New) {
     record.Reload();
     value = record.GetValueDirect(member);
       }
       if (value == DBNull.Value)
     return null;
       return value;
 }
示例#2
0
 private void SetCrudCommandParameterValues(DbCommandInfo commandInfo, IDbCommand command, EntityRecord record)
 {
     if (record.Status == EntityStatus.Stub)
     record.Reload();
       for (int i = 0; i < commandInfo.Parameters.Count; i++) {
     var prm = (IDbDataParameter)command.Parameters[i];
     prm.Value = DBNull.Value;
     var prmInfo = commandInfo.Parameters[i];
     var isInput = prmInfo.Direction == ParameterDirection.Input || prmInfo.Direction == ParameterDirection.InputOutput;
     if (!isInput)  continue;
     var col = prmInfo.SourceColumn;
     if (col == null || col.Member == null) continue;
     var value = record.GetValueDirect(col.Member);
     if(value == null)
       value = DBNull.Value;
     var conv = prmInfo.TypeInfo.PropertyToColumnConverter;
     if (value != DBNull.Value && conv != null)
       value = conv(value);
     prm.Value = value;
       } //for i
 }
 public static EntityRecord GetEntityRefTarget(EntityRecord record, EntityMemberInfo member)
 {
     // Current value is null (meaning not set, yet). We must figure it out.
       // 1. If corresponding FK is null, then value is DbNull.
       var fromKey = member.ReferenceInfo.FromKey;
       var toKey = member.ReferenceInfo.ToKey;
       if (!record.KeyIsLoaded(fromKey) && record.Status != EntityStatus.New)
     record.Reload();
       if (record.KeyIsNull(fromKey))
     return null;
       // 2. The key is not null, let's lookup the record by FK; maybe it was already loaded
       var fkValue = new EntityKey(fromKey, record);
       var targetEntity = toKey.Entity;
       //Compute pkValue on target entity
       var pkValue = new EntityKey(targetEntity.PrimaryKey, fkValue.Values);
       //If Session available, ask session for existing record
       EntityRecord targetRec;
       if (record.Session != null)
     targetRec = record.Session.GetRecord(pkValue, LoadFlags.Stub); //either already loaded or a stub
       else
     targetRec = new EntityRecord(pkValue); //create detached stub
       return targetRec;
 }