none
请问WCF RIA 如何动态连接数据库? RRS feed

  • 问题

  • 我有3台不同IP地址PC.三台电脑都有mysql数据库,名称和结构一样.只是地址和端口不同.

     如今要动态连接上其中一台数据库.

    如果直接使用entity Model可以直接写connect string !

    但是使用wcf ria 没有这个?只能直接写wcf 来做!

    请问有没有人知道,wcf ria可以动态连接的方法!

    谢谢!!



    2011年4月26日 8:39

答案

  • 你好,

    “wcf ria可以动态连接的方法!”,

    据我所知,确实没有像你据说的那样常规的方法。

     

    其实,当你查看你的 Model.edmx 文件 (xxx.Designer.cs)你会发现你的数据实体类会有一个传 connectionString 为参数的构造函数:

     

            public TestDataEntities(string connectionString) : base(connectionString, "TestDataEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }

    所以你可以使用Reflection的方法尝试一下:

    在你的 DomainService.cs 文件中添加一个方法,如ChangeConnection:

            public void ChangeConnection(string connectionString)
            {
                // 用Reflection改变 LinqToEntitiesDomainService 类中一个名为 private TContext _objectContext; 的字段
            }

    如果你有任何关于Reflection的问题,我建议你在问题放在Visual C#论坛(如果你是C#程序员)或者 Visual Basic 论坛(如果你是VB程序员)以获得更多和更全面的答案。

    希望这对你有所帮助。


    Daoping Liu - MSFT
    2011年4月29日 3:45
    版主

全部回复

  • 你好,

    “wcf ria可以动态连接的方法!”,

    据我所知,确实没有像你据说的那样常规的方法。

     

    其实,当你查看你的 Model.edmx 文件 (xxx.Designer.cs)你会发现你的数据实体类会有一个传 connectionString 为参数的构造函数:

     

            public TestDataEntities(string connectionString) : base(connectionString, "TestDataEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }

    所以你可以使用Reflection的方法尝试一下:

    在你的 DomainService.cs 文件中添加一个方法,如ChangeConnection:

            public void ChangeConnection(string connectionString)
            {
                // 用Reflection改变 LinqToEntitiesDomainService 类中一个名为 private TContext _objectContext; 的字段
            }

    如果你有任何关于Reflection的问题,我建议你在问题放在Visual C#论坛(如果你是C#程序员)或者 Visual Basic 论坛(如果你是VB程序员)以获得更多和更全面的答案。

    希望这对你有所帮助。


    Daoping Liu - MSFT
    2011年4月29日 3:45
    版主
  • 谢谢,回复,也给了我思路.

     

     

    2011年5月5日 5:32
  • http://social.msdn.microsoft.com/Forums/zh-CN/silverlightzhchs/thread/330e6cac-3f46-4610-80d1-59d6d2499721 谢谢,奉献```
    2011年5月22日 13:27