Example #1
0
        private void RegisterProperty(Type entityType, PropertyInfo property)
        {
            //关联属性,即关联实体或子实体集属性
            if (typeof(IEntity).IsAssignableFrom(property.PropertyType) ||
                typeof(IEntitySet).IsAssignableFrom(property.PropertyType))
            {
                var mapping = property.GetCustomAttributes <PropertyMappingAttribute>().FirstOrDefault();
                var options = mapping != null && mapping.GetFlag(PropertyMappingAttribute.SetMark.LoadBehavior) ?
                              new RelationOptions(mapping.LoadBehavior) : null;

                PropertyUnity.RegisterSupposedProperty(property.Name, property.PropertyType, entityType, options: options);
            }
            else
            {
                var gp = new GeneralProperty()
                {
                    Name       = property.Name,
                    Type       = property.PropertyType,
                    EntityType = entityType,
                    Info       = new PropertyMapInfo {
                        ReflectionInfo = property, FieldName = property.Name
                    }
                };

                var mapping = property.GetCustomAttributes <PropertyMappingAttribute>().FirstOrDefault();
                if (mapping != null)
                {
                    InitMapInfo(mapping, gp.Info);
                }

                PropertyUnity.RegisterProperty(entityType, gp);
            }
        }