Can Visual Studio Lightswitch connect to an oracle database?
All the demos of Visual Studio Lightswitch use SQL-Server, it 开发者_JAVA技巧is possible to access data from Oracle using Visual Studio Lightswitch?
Yes, if you can get a third-part provider for the entity framework. I actually asked this question at VSLive this week.
Visual Studio Lightswitch can be persisted to an Oracle Database via the Entity Framework.
Oracle Data Provider (ODP.Net)
Oracle's ODAC Tools contains the Oracle Data Provider (ODP.Net) for use with Visual Studio applications. Oracle's latest driver with support for Entity Framework 4.1 and "Model First" approach.
EDIT: I am not sure if it supports "Code-First" or EF 4.2 so check documentation. That said, it's free and supported by Oracle so I would strongly suggest starting here before rolling your own, or using open source providers/drivers.
Download ODP.Net 11.2.0.3
EF Tutorial w/ ODP.Net
Notes: "11.2.0.2 Release 4" will cut it, but "11.2.0.3 is" out and more stable.
Third party drivers are available for purchase:
docConnect for Oracle
DevArt's ADO.Net Provider for Oracle
Open Source Providers
In addition there are some open source options available - one I found on Github:
https://github.com/object/NorthwindOData
Tutorial on MSDN: How to Connect Lightswitch to EF 4.1
I have used the latest ODAC 11.2 Release 4 (11.2.0.3.0) that supports Entity Framework, and it works fine.
If you get this error, "Inner exception message: Connection is already part of a local or a distributed transaction"
you can resolve the issue by following the second post by BScholz, https://forums.oracle.com/forums/thread.jspa?threadID=2263095
Basically, you need to implement SaveChanges_Excuting and SaveChanges_Excuted for the Oracle Data Source.
- Switch to "File View" (LightSwitch will display "Logical View" by default).
- Add a reference to "System.Transactions" in Server project.
- Switch back to "Logical View"
- Right Click the Data Source Name and click "View Code" to edit partial class.
Copy-and-paste the code below:
private TransactionScope _tscope; partial void SaveChanges_Executing() { _tscope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted }); } partial void SaveChanges_Executed() { _tscope.Complete(); _tscope.Dispose(); }
The LightSwitch training kit has an exercise dedicated to using alternative data sources via WCF RIA services.
You might find that useful.
精彩评论