Как создать необязательные ассоциации в классах Linq-To-Sql?

Я пытаюсь создать необязательную связь между парой таблиц. У меня есть одна таблица под названием «Счет-фактура». В таблице Invoice есть ссылка FK на таблицу Customer через поле CustomerId. В таблице Invoice также есть необязательная ссылка FK на проект, доступная через поле ProjectId.

Есть ли способ настроить мои классы Linq-To-Sql для дополнительной связи между счетом-фактурой и таблицей проекта?

Я хотел бы иметь возможность выбрать название проекта через эту ассоциацию, если таковая имеется.

Разъяснение

Можно ли это настроить в файле dbml? У меня есть частичный класс, который расширяет сущность Invoice, и я хотел бы иметь возможность создать свойство с именем ProjectName, которое обертывает Invoice.Project.Name.

Просто интересно, возможно ли это вообще или мне придется возвращать значение левого соединения в запросе.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
527
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это должно сделать это (синтаксис 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

Есть ли способ настроить это в файле dbml?

mattruma 10.12.2008 07:06
Ответ принят как подходящий

Думаю, я понял это ... это было намного проще, чем я думал. Все, что мне нужно, чтобы проверить, являются ли отношения нулевыми в частичном классе, который расширяет класс 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;
        }
    }

Другие вопросы по теме