테이블 순서 목록을 얻으려면 어떻게해야합니까?C#/SQL Server - 테이블 순서 결정
나는 두 개의 데이터베이스 (동일한 스키마)를 가지고 있으며 첫 번째 데이터베이스에서 두 번째 데이터베이스로 데이터를 가져 오려고합니다.
하지만 이제 제약 조건이 있습니다. 그래서 테이블을 삽입하기 전에 주문해야합니다. 예를 들어
public static void SQLUpdate(DataSet ds)
{
foreach (DataTable table in ds.Tables)
{
string TableName = table.TableName;
DataTable CurrentDt = clsDatabase.SQLQuery("SELECT * FROM " + TableName);
SqlDataAdapter da = new SqlDataAdapter("Select * FROM " + TableName, con);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
foreach (DataRow row in table.Rows)
{
DataRow[] drs = CurrentDt.Select(String.Format("[ID] = '{0}'", row["ID"].ToString()));
// No entry? INSERT!
if (drs == null || drs.Length == 0)
{
da.InsertCommand = cb.GetInsertCommand();
da.Update(new DataRow[] { row });
}
// Entry? UPDATE!
else if (drs.Length == 1)
{
da.UpdateCommand = cb.GetUpdateCommand();
da.UpdateCommand.CommandText += " WHERE ID = @ID";
da.Update(drs);
}
}
}
}
: 두 개의 테이블 :
PERSON : ID, Name, AdressID
ADRESS : ID, Town
Person.ID = 1, Person.Name = "John Doe", Person.AdressID = 1
Adress.ID = 1, Adress.Town = "Downtown"
첫 번째 데이터베이스의 행입니다 그건 내 C# 코드입니다 . 내 코드로 두 번째 데이터베이스에서 가져 오려고합니다.
주소가 첫 번째 삽입이어야하며 외래 키가 발생해야합니다. 그런 다음 사람을 가져올 수 있습니다.
이제 테이블 순서 목록이 필요합니다. Person
앞에 Address
을 가져와야합니다.
이 "순서를" 여기서 다루는 것은 실제로 ** 시맨틱 ** 일입니다 - ** 당신은 ** 데이터 소유자로서 그것을 알고 있습니다. 나는 이것을 쉽게 발견 할 수있는 방법이 없다. 그래서 기본적으로 올바른 순서가 존중되는 방식으로 코드를 작성하는 것입니다 ** - ADO.NET에서 설정할 수있는 "설정"또는 ADO.NET의 기능이 없습니다. 이 일을 너에게해라. –
그러나 외래 키가 정의 된 테이블간에 종속성이 무엇인지 결정할 수있는 단계가 있습니다. 솔리드 비트 일 가능성이 높습니다. 문제는 자동 생성 된 키 값을 처리합니다. – Murph