none
Como saber se um atributo de um objeto é chave primária usando Linq To Sql?? RRS feed

  • Pergunta

  • Oi!!

    Estou tentando clonar/copiar um objeto de Classe genérica T, porém o método que utilizo está copiando a chave primária do objeto de origem. Tem como saber se a propriedade sendo copiada é PK??

    public static T Clonar<T>(T objetoOriginal)
            {
                //Cria nova referência
                object objetoClonado = Activator.CreateInstance<T>();
    
                //Pega as propriedades
                PropertyDescriptorCollection propriedades = TypeDescriptor.GetProperties(objetoOriginal);
    
                //Seta as propriedades
                for (int i = 0; i < propriedades .Count; i++)
                    propriedades [i].SetValue(objetoClonado , propriedades [i].GetValue(objetoOriginal));
    
                //Retorna objeto clonado
                return (T) objetoClonado ;
            }

    Obrigado a todos!!!
    terça-feira, 20 de outubro de 2009 13:56

Respostas

  • Olá André,

    Veja só esse trecho de código que verifica se uma dada propriedade de uma classe, do Linq To Sql, é chave primária:

     var dataContext = new DataClasses1DataContext("stringDeConexao");
                
     if (dataContext.Mapping.GetTable(typeof (Class1)).RowType.GetDataMember(typeof (Class1).GetMember("NomeDaPropriedade")[0]).IsPrimaryKey)
         Console.WriteLine("NomeDaPropriedade é chave primária");
    Para esse exemplo, Class1 é uma classe definida no meu modelo do Linq To Sql.

    Se respondeu não deixe de marcar, abraço!

    Fred Policarpo - MCT, MCTS [Win, WPF, WF] http://twitter.com/fredpolicarpo
    quarta-feira, 21 de outubro de 2009 12:31