private object FindObject(RemotableAttribute tip, DTObject arg) { var idProperty = DomainProperty.GetProperty(tip.ObjectType, EntityObject.IdPropertyName); var id = DataUtil.ToValue(arg.GetValue("id"), idProperty.PropertyType); var repository = Repository.Create(tip.ObjectType); return(repository.Find(id, QueryLevel.None)); }
protected void UseDefines(DTObject arg, Action <AggregateRootDefine, object> action) { var typeName = arg.GetValue <string>("typeName"); var defines = RemoteType.GetDefines(typeName); foreach (var define in defines) { var idProperty = DomainProperty.GetProperty(define.MetadataType, EntityObject.IdPropertyName); var id = DataUtil.ToValue(arg.GetValue(EntityObject.IdPropertyName), idProperty.PropertyType); action((AggregateRootDefine)define, id); } }
/// <summary> /// 验证属性值是否重复 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="property"></param> public static void CheckPropertyRepeated <T>(T obj, string propertyName, ValidationResult result) where T : class, IAggregateRoot { var property = DomainProperty.GetProperty(typeof(T), propertyName); CheckPropertyRepeated(obj, property, result); }
private static bool FillFields(List <IDataField> fields, IDataField current) { string name = string.IsNullOrEmpty(current.Name) ? current.GetPropertyName() : current.Name; switch (current.FieldType) { case DataFieldType.GeneratedField: { fields.Add(current); //对于生成的键,直接追加 return(true); } case DataFieldType.Value: { var valueField = current as ValueField; //存值 var field = new ValueField(current.Tip, valueField.DbFieldTypes.ToArray()) { Name = name, ParentMemberField = current.ParentMemberField }; fields.Add(field); return(true); } //case DataFieldType.ValueList: // { // //普通值的集合,会被转换成逗号分隔的字符串存放,因此作为字段输入 // var vlf = current as ValueListField; // var field = new ValueListField(vlf.Tip) // { // Name = name // }; // fields.Add(field); // return true; // } case DataFieldType.EntityObject: case DataFieldType.EntityObjectPro: case DataFieldType.AggregateRoot: { //存外键即可 var idAttr = DomainProperty.GetProperty(current.Tip.PropertyType, EntityObject.IdPropertyName).RepositoryTip; var field = new ValueField(idAttr) { Name = _getIdName(name), ParentMemberField = current }; fields.Add(field); return(true); } case DataFieldType.ValueObject: { var primaryKey = GeneratedField.CreateValueObjectPrimaryKey(current.Tip.PropertyType); var field = new ValueField(primaryKey.Tip) { Name = _getIdName(name), ParentMemberField = current }; fields.Add(field); return(true); } default: { current.Name = name; //对于其他的类型,只是赋值字段名称 break; } } return(false); }