/// <summary> /// Значение заданного атрибута для заданной строки НСИ справочника /// </summary> /// <param name="referenceId">Ссылка на НСИ справочник</param> /// <param name="recordId">ИД строки НСИ справочника</param> /// <param name="attributeId">ИД атрибута НСИ справочника</param> /// <returns>Значение атрибута</returns> public static object GetNSIReferenceRecordAttributeValue(string referenceId, string recordId, string attributeId) { using (var entities = new NsiModel()) { return(GetNSIReferenceRecordAttributeValue(entities, referenceId, recordId, attributeId)); } }
/// <summary> /// Обновить настройки справочников для выбранной БД. /// </summary> private void UpdateNsiCollection() { try { if (SelectedDb == null) { return; } HourGlass.Enable = true; NsiModel = null; string connectionString = DbConnectionHelper.BuildConnection(SelectedDb.DbName); NsiModel = new NsiModel(connectionString); NsiModel.GM_NSIReferenceSet.Load(); //Все справочники NsiCollection = NsiModel.GM_NSIReferenceSet.Local; } catch (Exception) { //TODO log } finally { HourGlass.Enable = false; } }
public static GM_NSIReferenceRecord GetNSIReferenceRecord(long recId, NsiModel context = null) { if (context != null) { return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.RecId == recId)); } using (context = new NsiModel()) { return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.RecId == recId)); } }
/// <summary> /// Получить запись указанного справочника NSI по указанному RecordID /// </summary> /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param> /// <param name="recordId">ID записи справочника (задается через <see cref="NSIConstants"/>)</param> /// <param name="context">Контекст, используемый для поиска</param> /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо Null</returns> public static GM_NSIReferenceRecord GetNSIReferenceRecordNullable(string referenceId, string recordId, NsiModel context = null) { if (context != null) { return(GetNSIReferenceRecord(context, referenceId, recordId)); } using (context = new NsiModel()) { return(GetNSIReferenceRecord(context, referenceId, recordId)); } }
/// <summary> /// Значение заданного атрибута для заданной строки НСИ справочника /// </summary> /// <param name="context">Контекст доступа к БД</param> /// <param name="referenceId">Ссылка на НСИ справочник</param> /// <param name="recordId">ИД строки НСИ справочника</param> /// <param name="attributeId">ИД атрибута НСИ справочника</param> /// <returns>Значение атрибута, либо null</returns> public static object GetNSIReferenceRecordAttributeValue(NsiModel context, string referenceId, string recordId, string attributeId) { // Чтобы не плодить лишние перекрестные вызовы прочих методов и не плодить лишние запросы к БД, // данный метод включает некоторый копипаст прочих методов, но является самодостаточным if (context == null) { throw new ArgumentNullException("Не задан контекст доступа к данным"); } if (String.IsNullOrEmpty(referenceId) || String.IsNullOrEmpty(recordId) || String.IsNullOrEmpty(attributeId)) { throw new ArgumentNullException("Заданы не все параметры для поиска значения атрибута записи НСИ справочника"); } var nsiRecord = context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.ReferenceId == referenceId && x.RecordId == recordId); var nsiAttribute = context.GM_NSIReferenceAttributeSet.FirstOrDefault(x => x.ReferenceId == referenceId && x.ReferenceAttributeId == attributeId); if (nsiRecord != null && nsiAttribute != null) { var nsiRecordAttribute = nsiRecord.GM_NSIReferenceRecordAttribute.FirstOrDefault(x => x.ReferenceAttributeRecId == nsiAttribute.RecId); if (nsiRecordAttribute != null) { switch ((NSIDataTypes)nsiAttribute.ReferenceAttributeType) { case NSIDataTypes.String: return(nsiRecordAttribute.ValueString); case NSIDataTypes.Integer: return(nsiRecordAttribute.ValueInteger); case NSIDataTypes.Real: return(nsiRecordAttribute.ValueReal); case NSIDataTypes.DateTime: return(nsiRecordAttribute.ValueDate); case NSIDataTypes.ReferenceRecord: return(nsiRecordAttribute.ValueRecord); default: throw new ArgumentOutOfRangeException(); } } } return(null); }
/// <summary> /// Получить запись указанного справочника NSI по указанному значению атрибута /// </summary> /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param> /// <param name="atrId">ID атрибута (задается через <see cref="NSIConstants"/>)</param> /// /// <param name="atrVal">значение указанного атрибута</param> /// <param name="context">Контекст, используемый для поиска</param> /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо null</returns> public static GM_NSIReferenceRecord GetNSIReferenceRecordByAttribute(string referenceId, string atrId, object atrVal, NsiModel context = null) { if (String.IsNullOrWhiteSpace(referenceId) || String.IsNullOrWhiteSpace(atrId) || (atrVal is String ? String.IsNullOrWhiteSpace(atrVal as String) : atrVal == null)) { return(null); } List <GM_NSIReferenceRecord> records; if (context != null) { records = context.GM_NSIReferenceRecordSet .Where(x => x.ReferenceId.Equals(referenceId) && x.GM_NSIReferenceRecordAttribute.Any( a => a.GM_NSIReferenceAttribute.ReferenceAttributeId.Equals(atrId))).ToList(); return(records.FirstOrDefault(x => { var val = x.GetAttributeValue(atrId); // Если атрибут является строковым - нужно искомое значение атрибута привести к строке, даже если в качестве значения передана не строка! return val is String ? String.Equals((val as String), atrVal.ToString(), StringComparison.OrdinalIgnoreCase) : val == atrVal; })); } using (context = new NsiModel()) { records = context.GM_NSIReferenceRecordSet .Where(x => x.ReferenceId.Equals(referenceId) && x.GM_NSIReferenceRecordAttribute.Any( a => a.GM_NSIReferenceAttribute.ReferenceAttributeId.Equals(atrId))).ToList(); return(records.FirstOrDefault(x => { var val = x.GetAttributeValue(atrId); return val is String ? String.Equals((val as String), atrVal.ToString(), StringComparison.OrdinalIgnoreCase) : val == atrVal; })); } }
public static GM_NSIReferenceRecord GetNSIReferenceRecordByAttributeSafe(string referenceId, string atrId, object atrVal, NsiModel context = null) { var record = GetNSIReferenceRecordByAttribute(referenceId, atrId, atrVal, context); return(record ?? new GM_NSIReferenceRecord { RecId = 0, RecordId = string.Empty, RecordName = string.Empty }); }
private static GM_NSIReferenceRecord GetNSIReferenceRecord(NsiModel context, string referenceId, string recordId) { return(context.GM_NSIReferenceRecordSet.FirstOrDefault(x => x.ReferenceId.Equals(referenceId) && x.RecordId.Equals(recordId))); }
/// <summary> /// Получить запись указанного справочника NSI по указанному RecordID /// </summary> /// <param name="referenceId">ID справочника (задается через <see cref="NSIConstants"/>)</param> /// <param name="recordId">ID записи справочника (задается через <see cref="NSIConstants"/>)</param> /// <param name="context">Контекст, используемый для поиска</param> /// <returns>Возвращает запись справочника типа <see cref="GM_NSIReferenceRecord"/> либо пустую заглушку</returns> public static GM_NSIReferenceRecord GetNSIReferenceRecord(string referenceId, string recordId, NsiModel context = null) { return(GetNSIReferenceRecordNullable(referenceId, recordId, context)); }