从app更改connectionstring中的数据库

时间:2016-01-29 13:54:41

标签: azure xamarin

我已经创建了一个Xamarin,我想在Azure SQL Server上查询一个数据库,并且关于我得到的结果,我想查询某些X数据库中的一个。

到目前为止,我已经能够创建两个不同的API,其中第一个API从第一个数据库获取信息。

我已经硬编码(在TableController中)使用一个特定的数据库(在同一个SQL Server中)。

  string dbString = "database2";
  myContextClass context = new myContextClass(dbString);

这就像一个魅力。然而。我希望能够从我的应用程序传递我想要连接的数据库。

即。在调用我的移动服务时,我所做的就是:

 this.client = new MobileServiceClient(
                Constants.DatabaseURL);

我可以添加到此方法调用中,以便在控制器中设置数据库连接字符串吗?

2 个答案:

答案 0 :(得分:0)

您不应该从移动应用程序连接到数据库,您应该有一个后端REST服务,例如使用Web API构建并托管在Azure API服务中,这是与数据库的连接,以及连接字符串将添加到web.config文件中,该文件可以从Azure门户轻松更改。

答案 1 :(得分:0)

我认为您需要2个dbContext实例。以下是控制器中如何初始化1 dbContext的示例。所以,我想,您可以使用您想要指定所需数据库的参数,并使用主控制器或调用另一个使用其他dbContext初始化的控制器。 (或尝试用不同的上下文覆盖DomainManager)

 public class TodoItemController : TableController<TodoItem>
    {
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);
            AppContext context = new AppContext();
            DomainManager = new EntityDomainManager<TodoItem>(context, Request);
        }

        // GET tables/TodoItem
        public IQueryable<TodoItem> GetAllTodoItems()
        {
            return Query();
        }

然后你有2个像这样的dbContext实例:

public class AppContext : DbContext
    {
        private const string connectionStringName = "Name=MS_TableConnectionString";

        public NeptuneAppContext() : base(connectionStringName)
        {
        } 

您可以在其中指定不同的connectionStrings。 希望它有所帮助