Linq для сущностей, чтобы объединить две таблицы - PullRequest
1 голос
/ 10 августа 2011

Есть ли способ объединить две таблицы БД, чтобы я мог получить идентификатор из первой таблицы, а затем использовать этот идентификатор для получения описания из второй таблицы?

Например, следующий запрос получает идентификатор детали, но мне нужно найти описание для этого идентификатора детали, чтобы я мог поместить описание в сетку данных. Я пытался использовать «Включить» на стороне веб-сервера, но во время выполнения это не удалось.

var query = myContext.Get_Table1();
query = query.Where(c => c.Part_ID == '12345');
LoadOperation<My.Web.Table1> loadOp = this.maxContextTransactionHistory.Load(query, QueryCompletedCallback, null);
this.dataGrid.ItemsSource = loadOp.Entities;

1 Ответ

1 голос
/ 10 августа 2011

Я так понимаю, вы пользуетесь услугами WCF RIA? Было бы полезно, если бы вы пометили свой вопрос, чтобы указать это.

В этом случае вам нужно будет использовать метод Включить в вашем DomainService , чтобы включить связанный объект в результаты запроса.

Вам также необходимо применить IncludeAttribute к ассоциации, чтобы убедиться, что они переданы клиенту. Вы можете применить атрибут к классу «Приятель», который покрыт здесь .

Теоретически было бы достаточно применить IcludeAttribute непосредственно к свойствам внутри сгенерированных классов сущностей. Там они будут перезаписаны.

Следующий выбор будет в частичном классе. Добавление там другого свойства с такой же подписью (чтобы к нему можно было применить атрибут) может привести к конфликту с исходным свойством.

Решение состоит в том, чтобы использовать новый класс, определенный в частичном классе. Атрибут MetadataType используется в частичном классе для указания класса, в котором определены его метаданные.

Следующий код гарантирует, что Part_Ttock Part_Stock будет включен при отправке клиенту. Вам понадобится аналогичный код для покрытия любых других интересующих вас свойств.

[MetadataTypeAttribute(typeof(Part_Stock.Metadata))]
public partial class Part_Stock
{

    internal sealed class Metadata
    {
        // Metadata classes are not meant to be instantiated.
        private Metadata()
        {
        }

        [Include]
        public EntityCollection<Stock_Table> Stock_Table { get; set; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...