Stack Overflow em Português Asked by CS 2014 on November 17, 2021
Boas pessoal,
Preciso de criar um Web service WCF que recebe uma lista de objectos e insere-a numa base de dados postgresql.
Para testar criei uma app cliente vb.net, mas algo não está a correr como esperado.
Até ao momento tenho o seguinte condigo implementado:
IService.cs
public interface IService1
{
[OperationContract]
int InsertClients(MyListofClients clients);
}
[DataContract]
public class MyListofClients
{
[DataMember]
List<Client> Clients { get; set; }
}
[DataContract]
public class Client
{
[DataMember]
public string clientId { get; set; }
[DataMember]
public string ClientName { get; set; }
[DataMember]
public List<Client> Clients { get; set; }
}
}
Servic1.svc
public int InsertClients(MyListofClients clients)
{
int res, result;
using (NpgsqlConnection conn = new NpgsqlConnection(connStringFarm))
{
conn.Open();
List<MyListofClients> firstStringList = new List<MyListofClients>();
string cmdStr = String.Format("Insert Into table (x1,x2)" +
" VALUES(@x1,@x2)");
foreach (var item in firstStringList)
{
NpgsqlCommand cmd = new NpgsqlCommand(cmdStr, conn);
result = cmd.ExecuteNonQuery();
}
conn.Close();
return 0;
}
App Client
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim db_comm As New NpgsqlCommand
Dim Reader As NpgsqlDataReader
Dim query As String = "Select code1,name1 from clientes"
db_comm.CommandText = query
db_comm.Connection = conn
conn.open
Reader = db_comm.ExecuteReader
Dim list As New List(Of String)
While Reader.Read
list.Add(Reader.GetString("code1"))
list.Add(Reader.GetString("name1"))
End While
Dim API As APICS.Service1Client = New APICS.Service1Client()
API.InsertClientsAsync(list)
End Sub
ERROR Value of type ‘List(Of String)’ cannot be converted to
‘MyListofClients’.
Penso que o problema tem a ver com a list que tem de ser do tipo ‘MyListofClients‘.
Dim list As New List(Of APICS.MyListofClients)
no entanto não consigo perceber como devo enviar a lista desta forma
Alguma dica??
CS, te aconselho a gerar o proxy do WebService usando a opção "Add Service Reference..." que surge ao clicar com o botão direito do mouse sobre as "References".
tente utilizar um endpoint do tipo "Metadata Exchange" na hora de baixar as informações do serviço, este abordagem é preferível que usando o bom e velho ?wsdl
.
se configurar deste jeito, a sua aplicação cliente sequer permitiria enviar uma lista de strings ao invés de uma lista de clientes.
agora tente mudar a sua chamada para o seguinte.:
Dim list As New List(Of APICS.Client)
While Reader.Read
Dim cliente As APICS.Client = New APICS.Client()
cliente.clientId = Reader.GetString("code1"))
cliente.ClientName = Reader.GetString("name1"))
list.Add(cliente)
End While
lembre-se que não sou programador VB.NET, então o codigo acima pode apresentar alguns erros básicos (de sintaxe), mas à logica dele continua a mesma.
Answered by Tobias Mesquita on November 17, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP