2010-08-05 71 views
6

Visual Studio Lightswitch的所有演示使用SQL-Server,使用Visual Studio Lightswitch可以从Oracle访问数据?Visual Studio Lightswitch可以连接到oracle数据库吗?

+0

也看到http://meta.stackexchange.com/questions/59759/what-should-the-tag-for- visual-studio-lightswitch-012 – 2010-08-05 12:03:02

+0

伊恩:我给你留下了一个答案。您有三种选择(1)Oracle的ODP.Net 11.2 R4,(2)第三方驱动程序$$$,和(3)开放源代码。 @马特艾森伯格走在了正确的轨道上,但还有更多的选择。 – 2012-01-19 00:43:22

回答

5

的Visual Studio LightSwitch中可以持续通过实体框架的Oracle数据库。

  1. Oracle数据提供商(ODP.Net)

    Oracle的ODAC工具包含了与Visual Studio应用程序使用Oracle数据提供程序(ODP.Net)。 Oracle最新的驱动程序,支持Entity Framework 4.1和“Model First”方法。

    编辑:我不确定它是否支持“代码优先”或EF 4.2所以检查文档。也就是说,它是免费的,并得到Oracle的支持,所以我强烈建议您在开始之前从这里开始,或者使用开源提供商/驱动程序

    Download ODP.Net 11.2.0.3

    EF Tutorial w/ ODP.Net

    注: “11.2.0.2版本4” 将削减,但 “11.2.0.3是” 出来,更稳定。

  2. 第三方驱动程序可用于购买:

    docConnect for Oracle

    DevArt's ADO.Net Provider for Oracle

  3. 开源提供商

    另外还有一些开源的选择 - 我发现一个ñGithub上:

    https://github.com/object/NorthwindOData


教程MSDN: How to Connect Lightswitch to EF 4.1

+0

是否有每个版本的Oracle ODAC工具未处于测试阶段,但是完全支持.net的发货版本? – 2012-01-19 09:58:33

+0

是的。我忘了编辑我的答案 - 11.2.0.3已完全发布,不是beta版,它支持Entity Framework 4.1 - 警告:它支持“model first”和“4.1”...你必须阅读文档或请问支持4.1和Code-First方法是否合适。 – 2012-01-19 17:29:20

7

是的,如果你可以得到实体框架的第三方供应商。我本周在VSLive实际上问过这个问题。

+0

实体框架的第三方供应商需要多少钱?还有人需要知道如何编程将其挂接到Lightswitch? – 2010-08-06 08:23:24

+0

http://web.datadirect.com/products/net/net-for-oracle/index.html。不确定你的问题的第二部分。 – 2010-08-07 00:29:15

+0

至于第二部分,我相信,只要将它安装在人的机器上,他们就会选择它作为数据源。他们需要知道连接信息,就像使用其他数据源一样。但不应该需要编程知识才能把它连接起来。 – 2010-08-23 12:37:46

0

LightSwitch training kit有一个专门用于通过WCF RIA服务使用备选数据源的练习。

你可能会觉得很有用。

3

我已经使用了支持实体框架的最新ODAC 11.2版本4(11.2.0.3.0),它工作正常。

如果你得到这个错误,“内部异常消息:连接已经是本地或分布式事务的一部分”

您可以通过以下由BScholz第二后解决问题,https://forums.oracle.com/forums/thread.jspa?threadID=2263095

基本上,您需要为Oracle数据源实施SaveChanges_Excuting和SaveChanges_Excuted。

  1. 切换到“文件视图”(LightSwitch默认显示“逻辑视图”)。
  2. 在Server项目中添加对“System.Transactions”的引用。
  3. 切换回“逻辑视图”
  4. 右键单击数据源名称,然后单击“查看代码”以编辑部分类。
  5. 复制和粘贴下面的代码:

    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(); 
    }