Я пытаюсь раскрыть структуру базы данных, сгенерировать какое-то POCO,
Я использовал этот фрагмент для обнаружения связанных таблиц,
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)
{
var tblName = dcn.Urn.GetNameForType("Table");
result.Add(tblName);
}
}
return result;
, это прекрасно работает для всехтаблица в базе данных, кроме тех, которые имеют Many-to-Many
отношение
, например
Car
CarColor
Employee
CarOwnerHistory
в CarOwnerHistory
, у меня есть отношение как к Car
, так и к Employee
,каждый Car
имеет CarColor
,
, хотя CarColor
не имеет ничего общего с CarOwnerHistory
, DependencyCollection
для него получают ссылку на CarOwnerHistory
, этосгенерированный код
public class Car {
public virtual IList<CarOwner> CarOwner { get; set; }
public virtual CarColor CarColor { get; set; }
}
public class CarColor {
public virtual IList<CarOwner> CarOwner { get; set;} //:( Why ???
public virtual IList<Car> Car { get; set;}
}
public class CarOwner {
public virtual Car Car { get; set; }
public virtual Employee Employee { get; set; }
}
это ошибка?если так, есть ли работа вокруг ??