Как создать необязательные ассоциации в классах Linq-To-Sql? - PullRequest
0 голосов
/ 10 декабря 2008

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

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

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

Разъяснение

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

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

Ответы [ 2 ]

0 голосов
/ 12 декабря 2008

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

Это должно сделать это (синтаксис 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...