none
Inserindo em chave de uma Associação RRS feed

  • Pergunta

  • Olá, estou com uma dúvida sobre LINQ =). É a seguinte idéia: Tenho a seguinte classe de Filmes 

    [Table(Name = "Filmes")] 
    class Filme 
    { 
     [Column(Name = "CodigoFilme", IsPrimaryKey = true, IsDbGenerated = true)]
     public int CodigoFilme { get; set; } 
    
     [Column(Name = "Nome")] 
     public String NomeFilme { get; set; } 
    
     [Association(OtherKey = "GeneroCodigo")] 
    public Genero GeneroFilme { get; set; } }

    Tenho associado uma classe de Genero, um filme tem um gênero, quando vou inserir o filme tenho o seguinte:

    DataContext context = new DataContext("Banco"); 
    

    Table<Filme> tbfilmes = dc.GetTable<Filme>();

    Filme filme = new Filme() { NomeFilme = "Teste", GeneroFilme = new Genero{ GeneroCodigo = 2} };
    tbfilmes.InsertOnSubmit(filme);
    context.SubmitChanges();

    O problema é que não chega ao banco o código do gênero. É preciso ter um campo chamado código do gênero na minha classe? Ou tem alguma solução utilizando a classe associada?

    Valew!

    quarta-feira, 18 de agosto de 2010 19:24

Respostas

  • Provavelmente no seu banco de dados você deve ter o GeneroCodigo. O que deve fazer (você deve ter alterado a classe) é recriar as classe da tabela filme. então terá o GeneroCodigo como um int. assim voce faria:

    Filme filme = new
     Filme() { NomeFilme = "Teste"
    , GeneroCodigo = 2 } };

    Minato alexandre.minato@hotmail.com - http://www.alexandreminato.com.br
    • Marcado como Resposta Adriano Galesso sexta-feira, 20 de agosto de 2010 01:54
    quinta-feira, 19 de agosto de 2010 01:01

Todas as Respostas

  • Provavelmente no seu banco de dados você deve ter o GeneroCodigo. O que deve fazer (você deve ter alterado a classe) é recriar as classe da tabela filme. então terá o GeneroCodigo como um int. assim voce faria:

    Filme filme = new
     Filme() { NomeFilme = "Teste"
    , GeneroCodigo = 2 } };

    Minato alexandre.minato@hotmail.com - http://www.alexandreminato.com.br
    • Marcado como Resposta Adriano Galesso sexta-feira, 20 de agosto de 2010 01:54
    quinta-feira, 19 de agosto de 2010 01:01
  • Alexandre,

    Obrigado pela resposta.

    É isso mesmo que eu fiz, como o gênero se tornou uma classe, a propriedade GeneroCodigo da tabela de filmes sumiu.

    Mas nesse caso minha classe num ficará tão inteligente, já que para listar eu vou carregar a associação: public Genero GeneroFilme { get; set; } 
    e para inserir: public int GeneroCodigo{ get; set; }.

    É assim mesmo que as coisas são no LINQ?

    quinta-feira, 19 de agosto de 2010 13:29
  • Sim..
    Minato alexandre.minato@hotmail.com - http://www.alexandreminato.com.br
    sexta-feira, 20 de agosto de 2010 01:05