Visual Studio Lightswitch的所有演示都使用 SQL-Server,是否可以使用 Visual Studio Lightswitch 从 Oracle 访问数据?
4 回答
是的,如果您可以获得实体框架的第三方提供商。这周我实际上在 VSLive 上问过这个问题。
Visual Studio Lightswitch 可以通过实体框架持久化到 Oracle 数据库。
Oracle 数据提供程序 (ODP.Net)
Oracle 的 ODAC 工具包含用于 Visual Studio 应用程序的 Oracle 数据提供程序 (ODP.Net)。Oracle 最新的驱动程序,支持 Entity Framework 4.1 和“模型优先”方法。
编辑:我不确定它是否支持“代码优先”或 EF 4.2,因此请查看文档。也就是说,它是免费的,并且由 Oracle 支持,所以我强烈建议您在自己动手之前从这里开始,或者使用开源提供程序/驱动程序。
注意:“11.2.0.2 Release 4”会删掉它,但“11.2.0.3 is”会更稳定。
第三方驱动程序可供购买:
开源提供商
此外,还有一些可用的开源选项——我在 Github 上找到的一个:
我使用了支持实体框架的最新 ODAC 11.2 Release 4 (11.2.0.3.0),它工作正常。
如果您收到此错误,“内部异常消息:连接已经是本地或分布式事务的一部分”
您可以按照 BScholz 的第二篇文章https://forums.oracle.com/forums/thread.jspa?threadID=2263095来解决此问题
基本上,您需要为 Oracle 数据源实现 SaveChanges_Excuting 和 SaveChanges_Excuted。
- 切换到“文件视图”(LightSwitch 将默认显示“逻辑视图”)。
- 在服务器项目中添加对“System.Transactions”的引用。
- 切换回“逻辑视图”
- 右键单击数据源名称,然后单击“查看代码”以编辑部分类。
复制并粘贴以下代码:
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(); }
LightSwitch 培训工具包有一个专门用于通过 WCF RIA 服务使用替代数据源的练习。
你可能会觉得这很有用。