private string GetRelationTable(Type type1, Type type2) { string table1 = MetaDataHelper.GetTableName(type1); string table2 = MetaDataHelper.GetTableName(type2); return(table1 + '_' + table2); }
public static void ValidateEntity(object entity) { var meta = MetaDataHelper.GetMetaData(entity.GetType()); foreach (var prop in meta.Properties.Values) { var val = prop.GetValue(entity); if (prop.RequiredAttribute != null) { if (val == null) { throw new ValidationException(prop.DisplayName + "字段必填"); } if (prop.PropertyInfo.PropertyType == typeof(string) && val.ToString().IsNullOrWhiteSpace()) { var errMsg = prop.RequiredAttribute.ErrorMessage ?? prop.DisplayName + "字段必填"; throw new ValidationException(errMsg); } } if (prop.StringLengthAttribute != null) { if (val != null && val.ToString().Length > prop.StringLengthAttribute.MaximumLength) { var errMsg = prop.StringLengthAttribute.ErrorMessage ?? prop.DisplayName + "字段长度不能超过" + prop.StringLengthAttribute; throw new ValidationException(errMsg); } } } }
public bool Send <T>(string to, string subject, string path, T t) { var temp = string.Empty; using (StreamReader reader = new StreamReader(path, Encoding.UTF8)) { temp = reader.ReadToEnd(); } var reg = new Regex(@"({{.*?}})"); var siteMeta = MetaDataHelper.GetMetaData <SiteInfo>(); var entityMeta = MetaDataHelper.GetMetaData <T>(); var content = reg.Replace(temp, (m) => { var prop = m.Value.Replace("{", "").Replace("}", ""); if (siteMeta.Properties.ContainsKey(prop)) { return(siteMeta.Properties[prop].GetValue(SiteInfo).ToString()); } else if (entityMeta.Properties.ContainsKey(prop)) { return(entityMeta.Properties[prop].GetValue(t).ToString()); } return(string.Empty); }); return(Send(to, subject, content)); }
public static void Add <TEntity>(Type type) { var entityMetaData = MetaDataHelper.GetMetaData <TEntity>(); var table = TypeDescriptor.GetAttributes(type).OfType <TableAttribute>().FirstOrDefault(); if (table == null) { TypeDescriptor.AddAttributes(type, new TableAttribute(entityMetaData.TableName)); } TypeDescriptionProvider parent = TypeDescriptor.GetProvider(type); var entityType = typeof(TEntity); MyTypeDescriptionProvider td = new MyTypeDescriptionProvider(parent, entityType); TypeDescriptor.AddProvider(td, type); }
internal MetaData(Type type) { RelationColumns = new Dictionary <string, PropertyEx>(StringComparer.OrdinalIgnoreCase); Properties = new Dictionary <string, PropertyEx>(StringComparer.OrdinalIgnoreCase); var typeAttr = TypeDescriptor.GetAttributes(type); var arrs = TypeDescriptor.GetProperties(type); TableName = MetaDataHelper.GetTableName(type); for (int idx = 0; idx < arrs.Count; idx++) { var prop = PropertyEx.Create(arrs[idx]); Properties[prop.Name] = prop; if (prop is IDProperty) { KeyColumn = (IDProperty)prop; } } }
public MyCustomTypeDescriptor(ICustomTypeDescriptor parent, Type genType) : base(parent) { EntityType = genType; var propertyCollections = parent.GetProperties(); var entityMetaData = MetaDataHelper.GetMetaData(EntityType); var entityProps = entityMetaData.Properties; List <PropertyDescriptor> propertyList = new List <PropertyDescriptor>(); foreach (PropertyDescriptor descriptor in propertyCollections) { var myProperty = new MyPropertyDescriptor(descriptor); var entityProperty = entityProps[myProperty.Name]; if (entityProperty != null) { List <Attribute> attriList = new List <Attribute>(); for (int i = 0; i < entityProperty.Attributes.Count; i++) { attriList.Add(entityProperty.Attributes[i]); } if (attriList.Count > 0) { myProperty.AddAttributes(attriList.ToArray()); } } else { myProperty.AddAttributes(new NotMappedAttribute()); } propertyList.Add(myProperty); } _propertyCollections = new PropertyDescriptorCollection(propertyList.ToArray()); }
public static void SetValue <T>(T entity, string propName, object newVal) { var meta = MetaDataHelper.GetMetaData(entity.GetType()); meta.Properties[propName].SetValue(entity, newVal); }
public static object GetValue <T>(T entity, string propName) { var meta = MetaDataHelper.GetMetaData(entity.GetType()); return(meta.Properties[propName].GetValue(entity)); }
private string GetReferenceID(Type type) { return(MetaDataHelper.GetTableName(type) + "Id"); }