Я пытаюсь создать необязательную связь между парой таблиц. У меня есть одна таблица под названием «Счет-фактура». В таблице Invoice есть ссылка FK на таблицу Customer через поле CustomerId. В таблице Invoice также есть необязательная ссылка FK на проект, доступная через поле ProjectId.
Есть ли способ настроить мои классы Linq-To-Sql для дополнительной связи между счетом-фактурой и таблицей проекта?
Я хотел бы иметь возможность выбрать название проекта через эту ассоциацию, если таковая имеется.
Разъяснение
Можно ли это настроить в файле dbml? У меня есть частичный класс, который расширяет сущность Invoice, и я хотел бы иметь возможность создать свойство с именем ProjectName, которое обертывает Invoice.Project.Name.
Просто интересно, возможно ли это вообще или мне придется возвращать значение левого соединения в запросе.

Это должно сделать это (синтаксис VB):
Dim results = _
From i in context.Invoice _
Join c in context.Customer On i.CustomerId Equals c.CustomerId _
Group Join p in context.Project On i.ProjectId Equals p.ProjectId Into g = Group _
Select i.InvoiceName, c.CustomerName, ProjectName = (From x In g Select x.Name).SingleOrDefault
Думаю, я понял это ... это было намного проще, чем я думал. Все, что мне нужно, чтобы проверить, являются ли отношения нулевыми в частичном классе, который расширяет класс LinqToSql.
Что-то типа:
public string ModifiedByName
{
get
{
if (this.ModifiedByUser == null)
return string.Empty;
else
return this.ModifiedByUser.FirstName + " " + this.ModifiedByUser.LastName;
}
}
public string CreatedByName
{
get
{
if (this.CreatedByUser == null)
return string.Empty;
else
return this.CreatedByUser.FirstName + " " + this.CreatedByUser.LastName;
}
}
Есть ли способ настроить это в файле dbml?