Можно ли использовать объединения при получении объектов из LINQ DataContext? - PullRequest
0 голосов
/ 22 июля 2010

Я использую LINQ и DataContext для возврата коллекции объектов из таблицы SQL Server. Таблица называется «Виджеты», и соответствующий класс C #, который я использую, показан ниже. Таблица Widgets содержит столбец Name и столбец TypeID, который является внешним ключом для другой таблицы типов виджетов.

[Table(Name = "Widgets")]
public Class Widget
{
    [Column(Name = "Name")]
    public String Name{get;set;}

    [Column(Name = "TypeID")]
    public int TypeID{get;set;}
}

Теперь я предпочел бы получить доступ к типу виджета по имени типа, а не по идентификатору, как показано ниже. Но имя типа происходит из другой таблицы, а не из Widget, WidgetTypes.

[Table(Name = "Widgets")]
public Class Widget
{
    [Column(Name = "Name")]
    public String Name{get;set;}

    [Column(Name = "TypeID")]
    public int TypeID{get;set;}

    //NEW PROPERTY
    public String TypeName(get;set;)
}

Есть ли способ выполнить JOIN с LINQ DataContext, который будет возвращать данные из нескольких таблиц в базе данных как один объект?


Обновление:

Вот мой DataContext

class WidgetsContext : DataContext
{
    public WidgetsContext(string connection):base(connection)
    {

    }

    public Table<Widget> Widgets;
    public Table<WidgetType> WidgetTypes;
}

1 Ответ

2 голосов
/ 22 июля 2010

Если вы говорите о Linq to SQL, вам вообще не нужно объединение в вашем коде LINQ:

var funWidgets = ctx.Widgets.Where(w => w.Type.Name == "FunWidgetType");

(при условии, что ctx - ваш DataContext)

Все, что вам нужно сделать, это убедиться, что в вашем файле DBML определена связь между виджетами и WidgetTypes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...