Pergunta

Eu tenho um mapeamento LINQ para SQL entre as classes POCO e meu banco de dados. Quero poder adicionar propriedades às minhas classes que representam construções um pouco mais complexas do que os valores simples do SCALR.

Por exemplo, eu tenho um tipo de estrutura personalizado que contém dois valores escalares simples. Não quero fazer desta outra tabela e depois adicionar um FK como propriedade. É possível mapear as propriedades desta estrutura usando o arquivo de mapeamento LINQ para SQL XML?

Por exemplo,

public class Foo
{
    public string Blah { get; set; }
    public Bar Yada { get; set; }
}

public struct Bar
{
    public int A { get; set; }
    public int B { get; set; }
}

Como eu especificaria isso Blah, Yada.A, e Yada.B são todos persistidos como colunas no Foo tabela?

Isso pode ser feito?

Foi útil?

Solução 2

Isso é realmente coxo, mas parece que pode ser o que eu tenho que fazer se eu continuar com L2s.

public class Foo
{
    public string Blah { get; set; }

    public int Bar_A { get; set; }
    public int Bar_B { get; set; }

    /* not mapped to DB */
    public Bar Yada
    {
        get { return new Bar { A = this.Bar_A, B = this.Bar_B }; }
        set { this.Bar_A = value.A; this.Bar_B = value.B; }
    }
}

public struct Bar
{
    public int A { get; set; }
    public int B { get; set; }
}

Obviamente, no código real, eu provavelmente conseguiria tal que não estava criando o valor repetidamente porque meu real Bar O tipo tem mais do que simplesmente conter os valores.

Outras dicas

Eu acho que a estrutura da entidade no .NET4 é necessária para fazer isso. Ver esta postagem do blog em tipos e entidades complexas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top