Я работаю над проектом C#
с запросом на Sql Db
автогенерируемыми классами с помощью инструмента sqlmetal
. Это прекрасно работает.Сопоставление другой таблицы во многих отношениях
Моя проблема заключается в том, что в моей БД у меня есть к таблицам (TABLEA и TableB), которые имеют many to many
отношения, таким образом, есть третья таблица называется TableATableB который содержит только первичные ключи TableA и ТаблицаB.
Так что, как и ожидалось, мой EntityModel имеет класс с именем TableA, который имеет свойство с именем TableATableB, который представляет собой набор всех связанных TableATableB строк.
Это автоматически сгенерированное свойство:
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_TableATableB_TableA", Storage="_TableATableB", ThisKey="Id", OtherKey="TableAId", DeleteRule="CASCADE")]
public EntitySet<TableATableB> TableATableB
{
get
{
return this._TableATableB;
}
set
{
this._TableATableB.Assign(value);
}
}
Дело в том, Я хотел TABLEA иметь свойство с именем TableB, который дает мне непосредственно в System.Data.EntitySet<TableB>
коллекцию всех связанных TableB строки, есть ли способ сделать это? Я пытался это сделать, но я не нашел способ его сопоставить.
Чтобы уточнить, я знаю, что обходной путь может быть следующим, но я пытаюсь понять, есть ли лучший способ. Кроме того, таким образом, как я мог узнать, когда в коллекцию добавлен объект TableB, чтобы добавить соответствующий объект TableATableB?
partial class TableA
{
public List<TableB> TableB
{
get
{
List<TableB> tableBRows = new List<TableB>();
foreach (TableATableB tAtB in this.TableATableB)
{
tableBRows.Add(tAtB.TableB);
}
return tableBRows;
}
set
{
// What to do here?
// I need to know when an element is added in order to add its respective
// TableATableB object
}
}
Заранее благодарен.
Это похоже на LINQ-to-SQL *, а не на платформу Entity Framework, не так ли? Вы должны соответственно изменить теги. – Slauma