Je rencontre un problème dans MySql.Data.MySqlClient.MySqlTransaction dans une application Windows Communication Foundation Server.WCF, MySQL et Transaction
J'utilise le MySqlTransaction dans la méthode de la classe qui implémente l'interface ServiceContract et il jette cette erreur lorsque je tente d'exécuter le service:
System.Runtime.Serialization.InvalidDataContractException: Type 'MySql.Data.MySqlClient.MySqlTransaction' ne peut pas être sérialisé. Pensez à le marquer avec l'attribut DataContractAttribute et à marquer tous les membres que vous souhaitez sérialiser avec l'attribut DataMemberAttribute. Si le type est une collection, envisagez de la marquer avec CollectionDataContractAttribute.
Mon code en service WCF était simmilar à ceci:
[ServiceContract]
public interface IDALService
{
MySqlCommand Command { [OperationContract] get; [OperationContract] set; }
[OperationContract]
void Execute(string cmdText);
}
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class DALService : IDALService
{
public MySqlCommand Command { get; set; }
public DALService()
{
Command = null;
}
public void Execute(string cmdText)
{
MySqlCommand SQLCom = this.Command??new MySqlCommand();
SQLCom.CommandText = cmdText;
if (this.Command == null)
{
SQLCom.CommandType = CommandType.Text;
SQLCom.Connection = new MySqlConnection(/* ... */);
SQLCom.Connection.Open();
SQLCom.Transaction = SQLCom.Connection.BeginTransaction();
}
if (this.Command == null)
{
try
{
SQLCom.ExecuteScalar();
SQLCom.Transaction.Commit();
}
catch { SQLCom.Transaction.Rollback(); throw; }
finally { SQLCom.Connection.Close(); }
}
else SQLCom.ExecuteScalar();
}
}
L'erreur se produit en tapant simplement le http://localhost:1257/DALService.svc dans mon navigateur web. J'utilise Framework 4, code en C#, dans Microsoft Visual Studio 2010 Pro.
Aidez-nous s'il vous plaît. Merci d'avance.
Ceci n'est pas votre méthode Execute complète, ou cela ne compile pas. Je ne vois pas de déclaration de retour. Nous devrions commencer par quelque chose qui compile. –
J'ai mis à jour ma question (changez le type de retour en void, et supprimez la variable 'Result' dans l'instruction try) –
Est-ce la seule méthode dans DALService? –