Silverlight WCF RIA服务动态更改连接字符串

Silverlight WCF RIA服务动态更改连接字符串,silverlight,entity-framework-4.1,connection-string,wcf-ria-services,Silverlight,Entity Framework 4.1,Connection String,Wcf Ria Services,我们有一个Silverlight应用程序,它使用WCF RIA服务和Entity Framework 4.1连接到数据库 目前,作为web.config中的标准配置提供了连接字符串,所有这些都可以成功地工作 但是,我现在希望能够在运行时根据用户登录等情况动态更改连接字符串 我还发现了其他一些提示,但它们使用的是ObjectContext,而我们在System.Data.Entity命名空间和DbDomainService类中使用的是DbContext 为了弥补这一点,我在DbDomainServ

我们有一个Silverlight应用程序,它使用WCF RIA服务和Entity Framework 4.1连接到数据库

目前,作为web.config中的标准配置提供了连接字符串,所有这些都可以成功地工作

但是,我现在希望能够在运行时根据用户登录等情况动态更改连接字符串

我还发现了其他一些提示,但它们使用的是ObjectContext,而我们在System.Data.Entity命名空间和DbDomainService类中使用的是DbContext

为了弥补这一点,我在DbDomainService实现中跳过了CreateDbContext()方法,如下所示:

protected override CoreContext CreateDbContext()
{
    dbServer = null, dbName = null;

    httpCookie = System.Web.HttpContext.Current.Request.Cookies["DBServer"];
    if (httpCookie != null)
    {
        dbServer = httpCookie.Value;
    }

    var cookie = System.Web.HttpContext.Current.Request.Cookies["DBName"];
    if (cookie != null)
    {
        dbName = cookie.Value;
    }

    if (dbServer == null && dbName == null)
    {
        return new CoreContext();
    }

    string connStr = "Data Source=" + dbServer + ";Initial Catalog=" + dbName + ";Integrated Security=true";
    return new CoreContext(connStr);
}
第一次加载Silverlight应用程序时,该方法可以成功地工作,但是,在所有后续加载中,使用与最初建立的连接相同的连接,尽管将替换的值更改为连接字符串

更改连接的唯一方法似乎是在IIS中回收应用程序池并再次加载应用程序


我做错什么了吗?或者不可能让DbDomainService动态更改其连接吗?

我正在考虑您的domainservice类的实例模型。你试过海关吗?它允许您决定何时创建它们的新实例,而且实现起来非常简单。
再看看弗雷德里克·诺曼的作品