You'll have to write your own persistence service which stores the state to oracle. You'll be able to easily configure or add this service through code. You'll derive from the base peristence service provide the mechanism to write and read from Oracle.
You probably have the information already, but the class from which you would derive is WorkflowPersistenceService and not SqlPersistenceService (there is no class with this name). For an example of a custom persistence service you can check out the CustomPersistenceService sample. This uses a file based store instead of a DB but you can look at the implementation and see what you would need to do to write one that uses Oracle.
We definitely don't want to use DTC, and would prefer to use local transactions as well. So just to be clear, can I use the provided Shared Connection transaction service if I use Oracle via ADO.NET
The shared connection transaction service provides the ability to share transactions across services that use the same connection string. So, the sqlpersistence and sqltracking can both participate in the same transaction if they use the same database.
It also, as pointed out on other threads I believe, relieves you from having to rely on the DTC since it uses local transactions and ends up not having to go to the DTC in most cases.
So, if you are OK using the default transaction services, which will just hand out transactions from System.Transactions, and using MSDTC to work with Oracle, then you will not have to write a transaction service. If you want to handle transactions a little differently and try to use the local transactions with Oracle, then I think you'll have to write your own transaction service.
The shared connection transaction service does have support for using the OLEDB client, but I think it is primarily for connecting to SQL with OLE DB. Your connection string has to have provider=SQLOLEDB in it. So you can connect to older version of SQL, but not to another database provider.
If you use the default transaction service, then you'll likely need to configure the DTC for Oracle. I don't do a lot with Oracle, so I am not as familiar with how it works with System.Transactions just yet.
SqlPersistenceService and Oracle
GiveMeABreakMs
Is this specifically related to the way SQL Server stored procs is implemented
In other words, do I need to implement any sort of transaction service if I use Oracle
Nyqvist
Hi Matt, thanks for the reply.
so i have to write a custom persistence service derived from the sqlPersistenceService. do i need to configure DTC for oracle
cheers,Sydney
Cashdollar
You'll have to write your own persistence service which stores the state to oracle. You'll be able to easily configure or add this service through code. You'll derive from the base peristence service provide the mechanism to write and read from Oracle.
Matt
Ntompson
Hi Sydney,
You probably have the information already, but the class from which you would derive is WorkflowPersistenceService and not SqlPersistenceService (there is no class with this name). For an example of a custom persistence service you can check out the CustomPersistenceService sample. This uses a file based store instead of a DB but you can look at the implementation and see what you would need to do to write one that uses Oracle.
Good luck
Steve
Martin Hart Turner
Tommy Tucker
The shared connection transaction service provides the ability to share transactions across services that use the same connection string. So, the sqlpersistence and sqltracking can both participate in the same transaction if they use the same database.
It also, as pointed out on other threads I believe, relieves you from having to rely on the DTC since it uses local transactions and ends up not having to go to the DTC in most cases.
So, if you are OK using the default transaction services, which will just hand out transactions from System.Transactions, and using MSDTC to work with Oracle, then you will not have to write a transaction service. If you want to handle transactions a little differently and try to use the local transactions with Oracle, then I think you'll have to write your own transaction service.
The shared connection transaction service does have support for using the OLEDB client, but I think it is primarily for connecting to SQL with OLE DB. Your connection string has to have provider=SQLOLEDB in it. So you can connect to older version of SQL, but not to another database provider.
Matt
alypeely
I don't believe so because it only supports the SQLOLEDB and SQLClient. You'll need to write your own and use the Oracle provider.
Matt
Gooddogs.com
If you use the default transaction service, then you'll likely need to configure the DTC for Oracle. I don't do a lot with Oracle, so I am not as familiar with how it works with System.Transactions just yet.
Matt