StrataFrame Forum

Unable to cast object of type 'System.DBNull' to type 'System.String'.

http://forum.strataframe.net/Topic10412.aspx

By Luiz Carneiro Lima - 7/18/2007

Olá,

Configurei o meu projeto no Business Object Mapper mas quando mando executar aparece a mensagem de erro que segue em anexo...

No Custom Wizard eu configurei pra quando for null string passa a ser "" e int passa a ser 0... Mas continua dando o erro...

Podem me ajudar?

Fico no aguardo.

Abraços

Angela

By Trent L. Taylor - 7/18/2007

You need to open the BO Mapper and set the NULL support that you want to provide for the field.  You can use the Customization Wizard to apply NULL support to a wide array of fields at the same time.  But in short, you need to indicate how you intend to deal with NULLs at the field level of the BO so that the binding and BO can manage it.  The most common when dealing with a string is to return an alternate value and then to provide an empty string.

To get to this screen:

  1. Click StrataFrame -> Business Object Mapper
  2. Select your BO on the left
  3. Select the field on the right panel
  4. Click the Customize button

The option specified above will covert a NULL value in the database into an empty string and an empty string will be saved back to the database as NULL.  If you do not want the value to be set back to the server as NULL then just choose the Return Alternate on Null option.

By Ivan George Borges - 7/18/2007

Entendeu Angela?
By Luiz Carneiro Lima - 7/18/2007

Entendi sim e fiz o que foi passado, passou por aquela parte, mas deu outro erro...

Tá em anexo...

Abraços

By Ivan George Borges - 7/18/2007

Não é o mesmo caso, mas para outro campo?
By Luiz Carneiro Lima - 7/18/2007

Eu fiz isso que foi passando tanto para os campos string quanto int...

No primeiro caso tava dando erro de conversão porque o campo estava vindo com valor null... Neste caso tá falando que a conversão é inválida mas essa variável loValue tem o valor 1... não tá vindo como null...

By Ivan George Borges - 7/18/2007

No caso dos campos int , você precisa setar para (reference type). E então pode inserir 0 como Replacement Value.

By Luiz Carneiro Lima - 7/18/2007

Fiz a mudança para reference type e continua apresentando o mesmo problema de cast...
By Ivan George Borges - 7/18/2007

Foi feito também "Build Partial"?

By Luiz Carneiro Lima - 7/18/2007

Foi feito sim...
By StrataFrame Team - 7/19/2007

The first problem looks fixed, but the second problem (the Int32 one) looks like the "loValue" is not really an integer.  I'm thinking she'll just have to place the loValue in the watch window so we can check what type it is.
By Ivan George Borges - 7/19/2007

Ben Chase (07/19/2007)
The first problem looks fixed, but the second problem (the Int32 one) looks like the "loValue" is not really an integer.  I'm thinking she'll just have to place the loValue in the watch window so we can check what type it is.

Thanks Ben.

Angela, por favor, primeiro gostaria que você voltasse no BO Mapper e configurasse seu campo int de volta para "aelu Type"... desculpa... Blush  Depois que fizer isto, faça o Build Partial, Rebuild sua aplicação e veja se o erro continua.

Se continuar, o Ben está pedindo para você colocar o loValue na Watch Window para a gente descobrir que "type"  ele está setado no momento do erro. Se você pudesse mandar a "Stack Trace" para a gente ver também, ajudaria bastante.

By Ivan George Borges - 7/19/2007

Angela, desculpa, aonde você lê "aelu Type", deveria ser "Value Type"

Nem digitar eu sei direito... BigGrin

By Luiz Carneiro Lima - 8/15/2007

Boa tarde Ivan,

Continuo com o problema de cast ao usar o StrataFrame...

Seguindo o tutorial consegui criar uma tela e listar alguns registros do banco de dados; mas quando mando incluir dá um erro de Cast.. Ele tenta converter 1 para inteiro...

Segue em anexo uma imagem do erro. Isso acontece quando o campo perde o foco.

Olhei na pasta de log mas não tem nenhum arquivo criado com a data de hoje...

Fico no aguardo de um contato.

Obrigada.

Angela

By Trent L. Taylor - 8/15/2007

If you put a breakpoint on the line where it fails, add the loValue.GetType() to the watch window to see what the type actually is.  It is indicating that the type cannot be casted, so we need to know what is in loValue.  I know the display value is "1" but I would like to know what the GetType() method indicates the data type as.
By Luiz Carneiro Lima - 8/16/2007

The value was decimal… therefore was giving problem of cast.

I corrected the problem.

Thanks!!

By Ivan George Borges - 8/16/2007

Good you got it!

Wink