Exemple #1
0
        private IList <HasMany> DetermineHasManyRelationships(Table table)
        {
            var hasManyRelationships = new List <HasMany>();
            var conn = new CUBRIDConnection(connectionStr);

            conn.Open();

            try
            {
                using (conn)
                {
                    var       schema = new CUBRIDSchemaProvider(conn);
                    DataTable dt     = schema.GetForeignKeys(new[] { "%" });
                    for (var i = 0; i < dt.Rows.Count; i++)
                    {
                        if (dt.Rows[i]["PKTABLE_NAME"].ToString() == table.Name)
                        {
                            var newHasManyItem = new HasMany
                            {
                                Reference       = dt.Rows[i]["FKTABLE_NAME"].ToString(),
                                ConstraintName  = dt.Rows[i]["FK_NAME"].ToString(),
                                ReferenceColumn = dt.Rows[i]["FKCOLUMN_NAME"].ToString()
                            };
                            hasManyRelationships.Add(newHasManyItem);
                        }
                    }
                }
            }
            finally
            {
                conn.Close();
            }

            return(hasManyRelationships);
        }
Exemple #2
0
        private List <HasMany> DetermineHasManyRelationships(Table table)
        {
            var hasManyRelationships = new List <HasMany>();
            var conn = new OleDbConnection(_connectionStr);

            conn.Open();
            try
            {
                using (conn)
                {
                    using (var command = new OleDbCommand())
                    {
                        command.Connection  = conn;
                        command.CommandText =
                            String.Format(
                                @"
						SELECT pt.table_name PK_TABLE
	                         , t.Table_name FK_TABLE
	                         , fc.column_name FK_COLUMN_NAME
	                         , fk.role CONSTRAINT_NAME
                        FROM
	                        SYSFOREIGNKEY fk
	                        INNER JOIN systable t ON t.table_id = fk.foreign_table_id
	                        INNER JOIN sysfkcol fcol ON fcol.foreign_table_id = fk.foreign_table_id AND fcol.foreign_key_id = fk.foreign_key_id
	                        INNER JOIN syscolumn fc	ON fc.column_id = fcol.foreign_column_id AND fc.Table_id = fcol.foreign_table_id
	                        INNER JOIN systable pt ON pt.table_id = fk.primary_table_id
                        WHERE pt.table_name = '{0}'
                        ORDER BY 1, 2",
                                table.Name);
                        var reader = command.ExecuteReader();

                        while (reader.Read())
                        {
                            var constraintName = reader["CONSTRAINT_NAME"].ToString();
                            var fkColumnName   = reader["FK_COLUMN_NAME"].ToString();
                            var existing       = hasManyRelationships.FirstOrDefault(hm => hm.ConstraintName == constraintName);
                            if (existing == null)
                            {
                                var newHasManyItem = new HasMany
                                {
                                    ConstraintName = constraintName,
                                    Reference      = reader.GetString(1)
                                };
                                newHasManyItem.AllReferenceColumns.Add(fkColumnName);
                                hasManyRelationships.Add(newHasManyItem);
                            }
                            else
                            {
                                existing.AllReferenceColumns.Add(fkColumnName);
                            }
                        }
                    }
                }
            }
            finally
            {
                conn.Close();
            }
            return(hasManyRelationships);
        }
        public CodeSnippetStatement Create(HasMany hasMany)
        {
            var hasManySnippet = string.Format("HasMany(x => x.{0}).WithMany(x => x.{1})", Formatter.FormatPlural(hasMany.Reference), pascalCaseTextFormatter.FormatSingular(hasMany.PKTableName));
            var keySnippet     = string.Format(".Map(m => {{m.ToTable(\"{0}\"); m.MapLeftKey(\"{1}\"); m.MapRightKey(\"{2}\");}})", hasMany.Reference, hasMany.ReferenceColumn, hasMany.ReferenceColumn);

            return(new CodeSnippetStatement(string.Format(AbstractGenerator.TABS + "{0}{1};", hasManySnippet, keySnippet)));
        }
Exemple #4
0
        private static IEnumerable <IConvention> GetConventions()
        {
            yield return(Table.Is(x => x.EntityType.Name));

            // TODO: TBD: does not seem to be taking? having to specify Id column?
            yield return(Id.Always(x => x.Column("Id")));

            yield return(HasMany.Always(x => x.Cascade.AllDeleteOrphan()));

            yield return(HasMany.Always(x => x.LazyLoad()));

            yield return(HasMany.Always(x => x.Inverse()));

            yield return(HasMany.Always(x => x.AsBag()));

            yield return(Reference.Always(x => x.LazyLoad()));

            yield return(Reference.Always(x => x.Cascade.All()));

            //// TODO: TBD: not strong enough:
            //yield return ForeignKey.EndsWith("Id");

            // TODO: TBD: does not seem to be taking? having to specify each reference column name?
            yield return(ForeignKey.Format((p, t) => (p == null ? t.Name : p.Name) + "Id"));

            // TODO: ditto Id Alwyas Id?
            yield return(PrimaryKey.Name.Is(x => "Id"));

            yield return(DefaultCascade.All());

            yield return(DefaultLazy.Always());
        }
Exemple #5
0
        public string Bag(HasMany hasMany, ITextFormatter formatter)
        {
            var builder = new StringBuilder();

            builder.Append("\t\t\tBag<" + formatter.FormatSingular(hasMany.Reference) + ">(x => x." + formatter.FormatPlural(hasMany.Reference) + ", colmap =>  { colmap.Key(x => x.Column(\"" + hasMany.ReferenceColumn + "\"));  }, map => { map.OneToMany(x => x.Class(typeof(" + formatter.FormatSingular(hasMany.Reference) + "))); });");
            return(builder.ToString());
        }
Exemple #6
0
 public rUser(string name, int age)
 {
     Articles  = new HasMany <rArticle>(this, null, "Reader_Id");
     this.Name = name;
     this.Age  = age;
     m_InitUpdateColumns();
 }
Exemple #7
0
 public rUser(long id, string name, int age)
 {
     this.Id   = id;
     Articles  = new HasMany <rArticle>(this, null, "Reader_Id");
     this.Name = name;
     this.Age  = age;
     this.InitLoadedColumns();
 }
Exemple #8
0
        public CodeSnippetStatement Create(HasMany hasMany)
        {
            var hasManySnippet = $"HasMany(x => x.{Formatter.FormatPlural(hasMany.Reference)})";
            var keySnippet     = hasMany.AllReferenceColumns.Count == 1 ? $".KeyColumn(\"{hasMany.ReferenceColumn}\")"
                        : $".KeyColumns({hasMany.AllReferenceColumns.Aggregate("new string[] { ", (a, b) => a + "\"" + b + "\", ", c => c.Substring(0, c.Length - 2) + " }")})";

            return(new CodeSnippetStatement(string.Format(AbstractGenerator.TABS + "{0}{1};", hasManySnippet, keySnippet)));
        }
        public void InitializeWithDefaults(Object Tag) {
            Set = new HasMany<DummyModel>();

            if (Tag is object[]) {
                object[] options = (object[])Tag;
                Name = (String)options[0];
                Value = (Int32)options[1];
            }
        }
Exemple #10
0
        // http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table-in-database/
        private IList <HasMany> DetermineHasManyRelationships(Table table)
        {
            var hasManyRelationships = new List <HasMany>();
            var conn = new SqlConnection(connectionStr);

            conn.Open();
            try {
                using (conn) {
                    using (var command = new SqlCommand()) {
                        command.Connection  = conn;
                        command.CommandText =
                            String.Format(
                                @"
						SELECT DISTINCT 
							PK_TABLE = b.TABLE_NAME,
							FK_TABLE = c.TABLE_NAME,
							FK_COLUMN_NAME = d.COLUMN_NAME,
							CONSTRAINT_NAME = a.CONSTRAINT_NAME
						FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS a 
						  JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS b ON a.CONSTRAINT_SCHEMA = b.CONSTRAINT_SCHEMA AND a.UNIQUE_CONSTRAINT_NAME = b.CONSTRAINT_NAME 
						  JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS c ON a.CONSTRAINT_SCHEMA = c.CONSTRAINT_SCHEMA AND a.CONSTRAINT_NAME = c.CONSTRAINT_NAME
						  JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE d on a.CONSTRAINT_NAME = d.CONSTRAINT_NAME
						WHERE b.TABLE_NAME = '{0}'
						ORDER BY 1,2"                        ,
                                table.Name.Replace("'", "''"));
                        SqlDataReader reader = command.ExecuteReader();

                        while (reader.Read())
                        {
                            var constraintName = reader["CONSTRAINT_NAME"].ToString();
                            var fkColumnName   = reader["FK_COLUMN_NAME"].ToString();
                            var pkTableName    = reader["PK_TABLE"].ToString();
                            var existing       = hasManyRelationships.FirstOrDefault(hm => hm.ConstraintName == constraintName);
                            if (existing == null)
                            {
                                var newHasManyItem = new HasMany
                                {
                                    ConstraintName = constraintName,
                                    Reference      = reader.GetString(1),
                                    PKTableName    = pkTableName
                                };
                                newHasManyItem.AllReferenceColumns.Add(fkColumnName);
                                hasManyRelationships.Add(newHasManyItem);
                            }
                            else
                            {
                                existing.AllReferenceColumns.Add(fkColumnName);
                            }
                        }
                    }
                }
            } finally {
                conn.Close();
            }
            return(hasManyRelationships);
        }
Exemple #11
0
 public Company()
 {
     Users       = new HasMany <User>(this, "Id", "Company_Id");
     Departments = new HasMany <Department>(this, "Id", "Company_Id");
     Employees   = new HasMany <Employee>(this, "Id", "Company_Id");
     Resources   = new HasMany <Resource>(this, "Id", "Company_Id");
     Trades      = new HasMany <Trade>(this, "Id", "Company_Id");
     Customers   = new HasMany <Customer>(this, "Id", "Company_Id");
     Products    = new HasMany <Product>(this, "Id", "Company_Id");
 }
        public string Bag(HasMany hasMany, ITextFormatter formatter)
        {
            var builder = new StringBuilder();

            if (_language == Language.CSharp)
            {
                builder.AppendFormat(
                    "\t\t\tBag(x => x.{0}, colmap =>  {{ colmap.Key(x => x.Column(\"{1}\")); colmap.Inverse(true); }}, map => {{ map.OneToMany(); }});",
                    formatter.FormatPlural(hasMany.Reference),
                    hasMany.ReferenceColumn);
            }
            else if (_language == Language.VB)
            {
                builder.AppendFormat(
                    "\t\t\tBag(Function(x) x.{0}, Sub(colmap) colmap.Key(Function(x) x.Column(\"{1}\")), Sub(map) map.OneToMany())",
                    formatter.FormatPlural(hasMany.Reference),
                    hasMany.ReferenceColumn);
            }
            return(builder.ToString());
        }
        public IList <HasMany> DetermineHasManyRelationships(Table table)
        {
            List <FbForeignKey> foreignKeys = null;
            var hasManyRelationships        = new List <HasMany>();

            using (var conn = new FbConnection(connectionStr))
            {
                conn.Open();
                foreignKeys = GetForeignKeyColumns(conn, "", table.Name);
            }

            if (foreignKeys == null)
            {
                return(hasManyRelationships);
            }

            foreach (var fk in foreignKeys)
            {
                var existing = hasManyRelationships.FirstOrDefault(hm => hm.ConstraintName == fk.ConstraintName);
                if (existing == null)
                {
                    var newHasManyItem = new HasMany
                    {
                        ConstraintName = fk.ConstraintName,
                        Reference      = fk.TableName
                    };
                    newHasManyItem.AllReferenceColumns.Add(fk.ColumnName);
                    hasManyRelationships.Add(newHasManyItem);
                }
                else
                {
                    existing.AllReferenceColumns.Add(fk.ColumnName);
                }
            }

            return(hasManyRelationships);
        }
Exemple #14
0
 public User()
 {
     Articles = new HasMany <Article>(this, "Id", "User_Id");
 }
Exemple #15
0
 public CategorySqlite()
 {
     Books = new HasMany <BookSqlite>(this, "Id", "Category_Id");
 }
 public OverPeople()
 {
     Pcs = new HasMany <OverPc>(this, "Id", "OverPeople_Id");
 }
Exemple #17
0
 public ArticleMore()
 {
     Bms = new HasMany <BelongsMore> (this, "Id", "Article_Id");
 }
Exemple #18
0
 public ReaderMore()
 {
     Bms = new HasMany <BelongsMore> (this, "Id", "Reader_Id");
 }
Exemple #19
0
 public For_TableName2()
 {
     Tables = new HasMany <ForTableName>(this, "Id", "For_TableName2_Id");
 }
Exemple #20
0
 public rUser()
 {
     Articles = new HasMany <rArticle>(this, null, "Reader_Id");
 }
Exemple #21
0
 public Author()
     : base() {
     Associations = new Association<AssocKey, AssocValue>();
     ValueAssociations = new AssociationWithValue<AssocKey, AssocValue>();
     Books = new HasMany<Book>();
 }
Exemple #22
0
 public Person()
 {
     Computers = new HasMany <Computer>(this, "Id", "Person_Id");
 }
Exemple #23
0
 public Trade()
 {
     Company = new BelongsTo <Company, long>(this, "Company_Id");
     Orders  = new HasMany <Order>(this, "Id", "Trade_Id");
 }
Exemple #24
0
        IList <HasMany> DetermineHasManyRelationships(Table table)
        {
            var hasManys = new List <HasMany>();

            using (var sqlCon = new DB2Connection(_connectionStr))
            {
                try
                {
                    sqlCon.Open();

                    using (DB2Command tableDetailsCommand = sqlCon.CreateCommand())
                    {
                        tableDetailsCommand.CommandText = $@"
select co.constrname, t.tabname, c.colno, c.colname, t2.tabname tabname2, c2.colno colno2, c2.colname colname2
  from sysreferences r
  inner join sysconstraints co on co.constrid = r.constrid and co.constrtype = 'R'
  inner join systables t on t.tabid = co.tabid
  inner join sysindexes i on i.idxname = co.idxname
  inner join syscolumns c on c.tabid = co.tabid

  inner join sysconstraints co2 on co2.constrid = r.primary
  inner join systables t2 on t2.tabid = co2.tabid
  inner join sysindexes i2 on i2.idxname = co2.idxname
  inner join syscolumns c2 on c2.tabid = co2.tabid
 
where (
       (c.colno = i.part1 and c2.colno = i2.part1)
    or (c.colno = i.part2 and c2.colno = i2.part2)
    or (c.colno = i.part3 and c2.colno = i2.part3)
    or (c.colno = i.part4 and c2.colno = i2.part4)
    or (c.colno = i.part5 and c2.colno = i2.part5)
    or (c.colno = i.part6 and c2.colno = i2.part6)
    or (c.colno = i.part7 and c2.colno = i2.part7)
    or (c.colno = i.part8 and c2.colno = i2.part8)
    or (c.colno = i.part9 and c2.colno = i2.part9)
    or (c.colno = i.part10 and c2.colno = i2.part10)
    or (c.colno = i.part11 and c2.colno = i2.part11)
    or (c.colno = i.part12 and c2.colno = i2.part12)
    or (c.colno = i.part13 and c2.colno = i2.part13)
    or (c.colno = i.part14 and c2.colno = i2.part14)
    or (c.colno = i.part15 and c2.colno = i2.part15)
    or (c.colno = i.part16 and c2.colno = i2.part16)
    )
  and t2.owner = '{table.Owner}'
  and t2.tabname = '{table.Name}'
";
                        using (DB2DataReader reader = tableDetailsCommand.ExecuteReader(CommandBehavior.Default))
                        {
                            HasMany hasMany = null;
                            while (reader.Read())
                            {
                                string constraintName = reader.GetString("constrname");
                                if (hasMany != null && hasMany.ConstraintName != constraintName)
                                {
                                    hasManys.Add(hasMany);
                                    hasMany = null;
                                }
                                if (hasMany == null)
                                {
                                    hasMany = new HasMany
                                    {
                                        ConstraintName = constraintName,
                                        Reference      = reader.GetString("tabname2"),
                                        PKTableName    = reader.GetString("tabname")
                                    };
                                }

                                hasMany.AllReferenceColumns.Add(reader.GetString("colname"));
                            }

                            if (hasMany != null)
                            {
                                hasManys.Add(hasMany);
                            }
                        }
                    }
                }
                catch
                {
                    sqlCon.Close();
                    throw;
                }
            }

            return(hasManys);
        }
Exemple #25
0
 public RequiredPerson()
 {
     Pc = new HasMany <RequiredPc> (this, "Id", "RequiredPerson_Id");
 }
Exemple #26
0
 public rUser()
 {
     Articles = new HasMany <rArticle>(this, null, "Reader_Id");
     m_InitUpdateColumns();
 }
Exemple #27
0
 public lCategory()
 {
     Books = new HasMany <lBook>(this, "Id", "Category_Id");
 }
Exemple #28
0
 public CCC1()
 {
     Indeies = new HasMany <IndexTestClass>(this, "Id", "IndexTestClass_Id");
 }
Exemple #29
0
 public AppGrupoUsr()
 {
     GrpMnu = new HasMany <AppGrupoUsrMnu> (this, "Id", "gru_id");
 }
Exemple #30
0
 public ctmUser()
 {
     infos = new HasMany <ctmInfo>(this, "Id", "user_id");
 }
Exemple #31
0
 public Department()
 {
     Company   = new BelongsTo <Company, long>(this, "Company_Id");
     Employees = new HasMany <Employee>(this, "Id", "Department_Id");
     Resources = new HasMany <Resource>(this, "Id", "Department_Id");
 }
Exemple #32
0
 public ImpPeople1()
 {
     _pcs = new HasMany <ImpPCs1>(this, "Id DESC", "Person_Id");
     m_InitUpdateColumns();
 }