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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }