我已经创建了一个Xamarin,我想在Azure SQL Server上查询一个数据库,并且关于我得到的结果,我想查询某些X数据库中的一个。
到目前为止,我已经能够创建两个不同的API,其中第一个API从第一个数据库获取信息。
我已经硬编码(在TableController中)使用一个特定的数据库(在同一个SQL Server中)。
string dbString = "database2";
myContextClass context = new myContextClass(dbString);
这就像一个魅力。然而。我希望能够从我的应用程序传递我想要连接的数据库。
即。在调用我的移动服务时,我所做的就是:
this.client = new MobileServiceClient(
Constants.DatabaseURL);
我可以添加到此方法调用中,以便在控制器中设置数据库连接字符串吗?
答案 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。 希望它有所帮助