Как я могу запросить таблицы, относящиеся к таблицам в обоих направлениях, используя SMO
, например
Table Employee
.....
JobId int NULL -- FK
Table Job
JobId int NOT NULL -- PK
, используя какой-то инструмент генерации, такой как MS T4 Template и SMO;я хочу добраться до следующих классов
class Employee {
......
public int? Job_Id
{
get { return _Job_Id; }
set
{
if (_Job_Id!= value)
{
if (Job != null && Job.JobId != value) //THE PROBLEM HERE (I CANNOT GET THE RELATED PK FOR THE RELATED TABLE)
{
Job = null;
}
_Job_Id= value;
}
}
}
private int? _Job_Id;
Job TheJob {get; set;}
}
class Job {
.....
ICollection<Employee> Employees { ..... }
}
Вот как я получаю связанные таблицы
public ArrayList GetChildren(Table tbl, Server server)
{
var result = new ArrayList();
DependencyWalker w = new DependencyWalker(server);
DependencyTree tree = w.DiscoverDependencies(new SqlSmoObject[]{tbl}, DependencyType.Children);
DependencyCollection depends = w.WalkDependencies(tree);
foreach (DependencyCollectionNode dcn in depends)
{
//System.Windows.Forms.MessageBox.Show( tbl.Name + " -> " + dcn.Urn.Parent);
if (dcn.Urn.Type == "Table" && dcn.Urn.GetNameForType("Table") != tbl.Name)
{
result.Add(dcn.Urn.GetNameForType("Table"));
}
}
return result;
}
Но как я могу получить ссылочный первичный ключ в связанной таблице (PK длясоответствующая таблица, для которой у меня есть FK).