public DataMember(string name, object value, DataMemberType memberType)
 {
     Name       = name;
     Value      = value;
     MemberType = memberType;
 }
        public string Generate(Type t)
        {
            StringBuilder sb         = new StringBuilder();
            var           attributes = t.GetCustomAttributes(false);

            foreach (var attribute in attributes)
            {
                if (attribute is DataTable)
                {
                    var ce = attribute as DataTable;

                    SqlServerSyntaxGenerator gen = new SqlServerSyntaxGenerator();
                    if (ce.Schema == null)
                    {
                        gen.SetTable(ce.TableName);
                    }
                    else
                    {
                        gen.SetTable(ce.Schema, ce.TableName);
                    }
                    var props = t.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);


                    foreach (var prop in props)
                    {
                        var propAttributes = prop.GetCustomAttributes(false);


                        DataMemberType propType = null;

                        foreach (var propAttribute in propAttributes)
                        {
                            if (propAttribute is DataMemberType)
                            {
                                propType = propAttribute as DataMemberType;
                            }
                        }

                        foreach (var propAttribute in propAttributes)
                        {
                            if (propAttribute is DataMember)
                            {
                                var cp = propAttribute as DataMember;
                                if (propType != null)
                                {
                                    if (cp.Length == -1)
                                    {
                                        gen.AddColumn(cp.ColumnName, propType.Type, cp.Nullable, cp.PrimaryKey);
                                    }
                                    else
                                    {
                                        gen.AddColumn(cp.ColumnName, propType.Type, cp.Nullable, cp.PrimaryKey, cp.Length);
                                    }
                                }
                                else
                                {
                                    if (cp.Length == -1)
                                    {
                                        gen.AddColumn(cp.ColumnName, prop.PropertyType, cp.Nullable, cp.PrimaryKey);
                                    }
                                    else
                                    {
                                        gen.AddColumn(cp.ColumnName, prop.PropertyType, cp.Nullable, cp.PrimaryKey, cp.Length);
                                    }
                                }
                            }
                        }
                    }
                    sb.Append(gen.Generate());
                    break;
                }
            }
            return(sb.ToString());
        }
示例#3
0
文件: DataMember.cs 项目: angleC/orm
 public DataMember(string name, DataMemberType type)
     : this(name, null, type)
 {
 }
示例#4
0
文件: DataMember.cs 项目: angleC/orm
 public DataMember(string name, object value, DataMemberType type)
 {
     this.Name       = name;
     this.Value      = value;
     this.MemberType = type;
 }
示例#5
0
文件: DataMember.cs 项目: angleC/orm
 public DataMember(object value, DataMemberType type)
     : this(string.Empty, value, type)
 {
 }