Como você cria associações opcionais nas classes Linq para SQL?

votos
0

Eu estou tentando criar uma associação opcional entre um par de mesas. Eu tenho uma tabela chamada fatura. A tabela Invoice tem uma referência FK para a tabela Cliente através do campo CustomerId. A tabela Invoice também tem uma referência FK não são aplicadas ao Projeto capaz através do campo projectId.

Existe uma maneira de configurar minhas classes Linq To-SQL para ter uma associação opcional entre a fatura ea tabela de projeto?

Eu gostaria de ser capaz de apanhar o Nome do projeto através desta associação, se estiver disponível.

esclarecimento

É possível configurá-lo no arquivo dbml? Eu tenho uma classe parcial que se estende a entidade Invoice e gostaria de ser capaz de criar uma propriedade chamada ProjectName que Invoice.Project.Name envoltório.

Basta saber se isso é mesmo possível ou se eu teria que voltar à esquerda agregar valor na consulta.

Publicado 10/12/2008 em 04:49
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Eu acho que eu descobri isso ... foi maneira mais simples do que eu pensava. Tudo o que eu preciso verificar para ver se as relações é nulo na classe parcial, que estende a classe LinqToSql.

Algo como:

   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;
        }
    }
Respondeu 12/12/2008 em 14:25
fonte usuário

votos
0

Isso deve fazê-lo (sintaxe 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
Respondeu 10/12/2008 em 05:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more