Bonjour,


J'ai crée la classe UnitOfWork suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Repository.Interface_Paris;
using Repository;
using System.Data.SqlClient;
 
namespace Repository.Classes_Paris
{
   //public class UnitOfWork:IUnitOfWork<SqlContext>
   public class UnitOfWork 
    {
        SqlContext Context = null;
        SqlTransaction sqlTx = null;
        public UnitOfWork(Connexion connectionUOW, bool useTransaction) {
 
            Context=new SqlContext();
           Context.sqlcontextConnection = connectionUOW;
 
        }//fin de constructeur
 
 
 
        public void CreateTransaction()
        {
            //BeginTransaction() renvoie la transaction créée
         sqlTx= Context.sqlcontextConnection.sqlConnection.BeginTransaction();
 
 
        }
 
      public SqlConnection GetConnection() {
 
            return Context.sqlcontextConnection.sqlConnection;
 
    }
 
 
       public SqlTransaction GetTransaction()
        {
            return sqlTx; 
        }
 
        public void Commit() {
 
            sqlTx.Commit();
 
        }
 
 
       public void Rollback()
            {
                sqlTx.Rollback();
 
 
            }
 
        public void Save(string TransactionSavePointName)
        {
 
            sqlTx.Save(TransactionSavePointName);
 
        }//fin de save
 
 
 
    }//fin de classe
}//fin de namespace
Je souhaiterais créer l'interface correspondante mais ai un peu de mal avec les classes héritées

Voici les différents essais que j'ai faits mais les types génériques utilisés ne collent pas si je declare la classe UnitOfWork ainsi

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
using System.Text;
using System.Threading.Tasks;
using Repository.Interface_Paris;
using Repository;
using System.Data.SqlClient;
 
namespace Repository.Classes_Paris
{
   public class UnitOfWork:IUnitOfWork<SqlContext>
.J'ai fait plusieurs essais comme cela apparaît ci-dessous mais finalement ai renoncé à déclarer la classe UnitOfWork en la faisant hériter d'une interface.

Merci beaucoup à vous de bien vouloir m'aider à résoudre cette situation pour que cela "colle" .

Bien cordialement.

new_wave

ps: j'ai supprimé les using pour ne pas brouiller le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
 
namespace Repository.Interface_Paris
 
{       
 
            //public interface IUnitOfWork<out TContext> where TContext : DbContext,new()
 
                //public interface IUnitOfWork<out TContext> where TContext : DbContext, new()
 
              public interface IUnitOfWork<out T> where T : class
            {
 
            //The following Property is going to hold the context object
            T Context{ get; }
 
            //Start the database Transaction
            void CreateTransaction();
 
            T GetConnection();
 
            T GetTransaction();
            //Commit the database Transaction 
            void Commit();
 
            //Rollback the database Transaction
            void Rollback();
 
            //DbContext Class SaveChanges method
            void Save();
 
        }//fin d'Interface
 
    }//fin de Namespace