/// <summary> /// 构造函数。 /// </summary> /// <param name="providerTableName">当前对象引用上级对象表的名称.</param> /// <param name="keyFieldName">当前对象引用上级对象表主键.</param> /// <param name="foreingKeyField">该对象引用的外键名称。</param> /// <param name="objectRelationType"></param> public ParentProviderAttribute(string providerTableName, string providerKeyName, string foreingKeyField, ObjectRelationType objectRelationType) { _ProviderTableName = providerTableName; _ProviderKeyName = providerKeyName; _ForeingKeyField = foreingKeyField; _ObjectRelationType = objectRelationType; }
public EntityFacade(CslaGeneratorUnit parent, ObjectRelationType relationType, string objectName, string propertyName, string collectionTypeName, string itemTypeName, LoadingScheme loadingScheme, CriteriaPropertyCollection loadProperties, ParameterCollection loadParameters, bool lazyLoad) : base(parent) { RelationType = relationType; ObjectName = objectName; PropertyName = propertyName; CollectionTypeName = collectionTypeName; ItemTypeName = itemTypeName; LazyLoad = lazyLoad; LoadingScheme = loadingScheme; LoadProperties = CriteriaPropertyCollection.Clone(loadProperties); LoadParameters = loadParameters; if (parent != null && parent.Params != null) { Parent = parent; } }
private void CreateNewSpcObjToPilot(IDataObject parent, SpcObject spcObject) { var t = GetTypeBySectionName(spcObject.SectionName); if (t == null) { return; } var builder = _objectModifier.Create(parent, t); spcObject.GlobalId = builder.DataObject.Id; foreach (var attr in spcObject.Columns) { var val = attr.Value; if (string.IsNullOrEmpty(attr.TypeName) || string.IsNullOrEmpty(val)) { continue; } // очишаем значение от служебных символов и выражений val = ValueTextClear(val); // в качестве наименование передаётся внутренее имя (а не то которое отображается) if (int.TryParse(val, out var i)) { builder.SetAttribute(attr.TypeName, i); } else { builder.SetAttribute(attr.TypeName, val); } } var doc = spcObject.Documents.FirstOrDefault(f => IsFileExtension(f.FileName, SOURCE_DOC_EXT)); if (doc == null) { return; } var fileName = doc.FileName; string[] paths = { fileName }; var storageObjects = _objectsRepository.GetStorageObjects(paths); var storageObject = storageObjects.FirstOrDefault(); if (File.Exists(spcObject.PreviewDocument)) { builder.AddFile(spcObject.PreviewDocument); } _objectModifier.Apply(); if (storageObject == null) { return; } if (storageObject.DataObject.Id == Guid.Empty) { return; } var loader = new ObjectLoader(_objectsRepository); loader.Load(spcObject.GlobalId, obj => { foreach (var relation in obj.Relations.Where(x => x.Type == ObjectRelationType.SourceFiles)) { _objectModifier.RemoveLink(obj, relation); } var relationId = Guid.NewGuid(); var relationName = relationId.ToString(); const ObjectRelationType relationType = ObjectRelationType.SourceFiles; var selectedRelation = new Relation { Id = relationId, Type = relationType, Name = storageObject.DataObject.DisplayName, TargetId = storageObject.DataObject.Id }; var chosenRelation = new Relation { Id = relationId, Type = relationType, Name = relationName, TargetId = builder.DataObject.Id }; _objectModifier.CreateLink(selectedRelation, chosenRelation); _objectModifier.Apply(); }); }
/// <summary> /// 构造函数。 /// </summary> /// <param name="providerTableName">当前对象引用上级对象表的名称.</param> /// <param name="keyFieldName">当前对象引用上级对象表主键.</param> /// <param name="objectRelationType"></param> public ParentProviderAttribute(string providerTableName, string keyFieldName, ObjectRelationType objectRelationType) : this(providerTableName, keyFieldName, null, objectRelationType) { }
private void CreateNewSpcToPilot(IDataObject parent, Specification spc) { var t = GetTypeSpecification(); var builder = _objectModifier.Create(parent, t); spc.GlobalId = builder.DataObject.Id; builder.SetAttribute("name", spc.Name); builder.SetAttribute("mark", ValueTextClear(spc.Designation)); // todo: нужен callbakc о создании или изменении объекта //if (File.Exists(spc.PreviewDocument)) //{ // builder.AddFile(spc.PreviewDocument); //} _objectModifier.Apply(); var loader = new ObjectLoader(_objectsRepository); loader.Load(spc.GlobalId, obj => { if (!File.Exists(spc.FileName)) { return; } string[] paths = { spc.FileName }; var storageObjects = _objectsRepository.GetStorageObjects(paths); var storageObject = storageObjects.FirstOrDefault(); if (storageObject == null) { return; } foreach (var relation in obj.Relations.Where(x => x.Type == ObjectRelationType.SourceFiles)) { _objectModifier.RemoveLink(obj, relation); } var relationId = Guid.NewGuid(); var relationName = relationId.ToString(); const ObjectRelationType relationType = ObjectRelationType.SourceFiles; var selectedRelation = new Relation { Id = relationId, Type = relationType, Name = storageObject.DataObject.DisplayName, TargetId = storageObject.DataObject.Id }; var chosenRelation = new Relation { Id = relationId, Type = relationType, Name = relationName, TargetId = spc.GlobalId }; _objectModifier.CreateLink(selectedRelation, chosenRelation); _objectModifier.Apply(); foreach (var spcObject in spc.ListSpcObjects) { if (spcObject.SectionNumber == 15) { continue; } CreateNewSpcObjToPilot(obj, spcObject); } if (spc.Children == null) { return; } foreach (var cSpc in spc.Children) { CreateNewSpcToPilot(obj, cSpc); } }); }