商信互联
当应用程序首次运行时,将自动创建其数据库。在以下以调试模式运行的过程中,应用程序将连接到相同的数据库并根据需要对其进行更新。当应用程序以发布模式运行时,默认情况下不会更新数据库。有关详细信息,请参阅创建和更新应用程序的数据库话题。如果您需要重新创建数据库,只需将其从数据库服务器中删除或删除文件,它将自动重新创建它。默认情况下,XAF解决方案配置为使用通过集成安全性访问的本地系统上的Microsoft SQL Server Express实例。将以您创建的解决方案的名称在该服务器上创建一个数据库。但是,用作对象关系映射层的XPO支持十几个数据库管理系统。因此,您可以更改默认连接。为此,您需要指定所需的连接设置,并引用所需的数据库提供程序连接器程序集。本主题描述了几种方法,使您可以将XAF应用程序连接到所需的数据库提供程序。
当您需要访问已编译的应用程序中的连接字符串时,请通过应用程序项目的配置文件进行指定。
默认情况下,这些配置文件包含connectionStrings部分,该部分具有许多带注释的示例连接字符串。您可以取消注释和自定义现有连接字符串之一,或通过以下方式指定新的连接字符串。
<connectionStrings>
<add name="ConnectionString" connectionString=
"Integrated Security=SSPI;Pooling=false;Data Source=.\SQLEXPRESS;Initial Catalog=MainDemo" />
</connectionStrings>
在XPO应用程序中,初始连接字符串声明将Pooling设置为false,从而覆盖默认的true值并禁用SQL Server Connection Pooling。我们不建议删除“ Pooling = false; ”或将Pooling设置为true。XPO使用具有禁用池功能的单独连接来创建新数据库。如果启用了池,则SQL Server尝试创建数据库并尝试使用池中的现有连接。这将导致错误,因为未通知连接已创建数据库。
请注意,默认情况下,XAF应用程序项目被配置为连接到MS Access和MS SQL Server。但是,如果连接到其他服务器,则需要执行两个附加步骤。
当注释连接字符串或未在配置文件中指定连接字符串时,应用程序将使用在应用程序设计器中指定的连接字符串。以下代码提供了此功能,以下代码会自动添加到每个XAF解决方案中。
WinForms
public static void Main(string[] arguments) {
MySolutionWinApplication winApplication = new MySolutionWinApplication();
//...
if(ConfigurationManager.ConnectionStrings["ConnectionString"] != null) {
winApplication.ConnectionString = ConfigurationManager.
ConnectionStrings["ConnectionString"].ConnectionString;
}
winApplication.Setup();
winApplication.Start();
//...
}
Public Shared Sub Main(ByVal arguments As String())
Dim winApplication As MySolutionWinApplication = New MySolutionWinApplication()
'...
If Not ConfigurationManager.ConnectionStrings("ConnectionString") Is Nothing Then
winApplication.ConnectionString = ConfigurationManager. _
ConnectionStrings("ConnectionString").ConnectionString
End If
winApplication.Setup()
winApplication.Start()
'...
End Sub
ASP.NET
public class Global : System.Web.HttpApplication {
protected void Session_Start(object sender, EventArgs e) {
WebApplication.SetInstance(Session, new MySolutionWebApplication());
//...
if(ConfigurationManager.ConnectionStrings["ConnectionString"] != null) {
WebApplication.Instance.ConnectionString = ConfigurationManager.
ConnectionStrings["ConnectionString"].ConnectionString;
}
WebApplication.Instance.Setup();
WebApplication.Instance.Start();
}
//...
}
Public Class [Global]
Inherits System.Web.HttpApplication
Protected Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
WebApplication.SetInstance(Session, New MySolutionWebApplication())
'...
If Not ConfigurationManager.ConnectionStrings("ConnectionString") Is Nothing Then
WebApplication.Instance.ConnectionString = ConfigurationManager. _
ConnectionStrings("ConnectionString").ConnectionString
End If
WebApplication.Instance.Setup()
WebApplication.Instance.Start()
End Sub
'...
End Class
从上面的代码中可以看到,名为“ ConnectionString”的元素用于从配置文件中获取连接字符串。因此,除非您在应用程序代码中更改了相应的字符串,否则不要重命名此元素。
您可以通过“应用程序设计器”的“连接”部分指定连接字符串。在本节中选择“连接”项,以在“属性”窗口中修改ConnectionString属性。此外,您可以将SQL连接替换为另一个可用的连接。为此,将所需的连接从“工具箱”拖动到“连接”部分,然后根据需要指定ConnectionString属性。
当您将在所需的连接工具箱的连接部分,所需的数据库提供组件自动引用。如果所需的连接组件不可用,请右键单击“工具箱”以调用“选择工具箱项”对话框,勾选所需的连接组件,然后单击“确定”。
在应用程序配置文件中指定的连接字符串将覆盖在“应用程序设计器”中指定的连接字符串。这样做是为了向应用程序管理员提供一个选项,可以更改数据库连接而无需重新编译应用程序。
您可以通过XPO数据存储适配器类获取格式正确的连接字符串。这些类位于DevExpress.Xpo.v 19.2程序集的DevExpress.Xpo.DB命名空间中。每个适配器类都包含GetConnectionString方法。使用此方法可使用指定的参数获取与数据库的连接字符串。XPO支持的数据库系统主题中列出了所有XPO适配器类。
以下代码段演示了如何使用具有“ pwd”密码的“ usr”帐户连接到位于“ DBSERVER”服务器上的“ MyApp” MySql数据库。该MySql.Data组装必须在应用程序项目引用。
WinForms
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
//...
public static void Main(string[] arguments) {
MySolutionWinApplication winApplication = new MySolutionWinApplication();
//...
winApplication.ConnectionString =
MySqlConnectionProvider.GetConnectionString("DBSERVER", "usr", "pwd", "MyApp");
winApplication.Setup();
winApplication.Start();
//...
}
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
'...
Public Shared Sub Main(ByVal arguments As String())
Dim winApplication As MySolutionWinApplication = New MySolutionWinApplication()
'...
winApplication.ConnectionString = _
MySqlConnectionProvider.GetConnectionString("DBSERVER", "usr", "pwd", "MyApp")
winApplication.Setup()
winApplication.Start()
'...
End Sub
ASP.NET
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
//...
public class Global : System.Web.HttpApplication {
protected void Session_Start(object sender, EventArgs e) {
WebApplication.SetInstance(Session, new MySolutionWebApplication());
//...
WebApplication.Instance.ConnectionString =
MySqlConnectionProvider.GetConnectionString("DBSERVER", "user", "pwd", "MyApp");
WebApplication.Instance.Setup();
WebApplication.Instance.Start();
}
//...
}
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
'...
Public Class [Global]
Inherits System.Web.HttpApplication
Protected Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
WebApplication.SetInstance(Session, New MySolutionWebApplication())
'...
WebApplication.Instance.ConnectionString = _
MySqlConnectionProvider.GetConnectionString("DBSERVER", "user", "pwd", "MyApp")
WebApplication.Instance.Setup()
WebApplication.Instance.Start()
End Sub
'...
End Class
如果要使用上述第一种或第二种方法指定连接字符串,请在调试器中查看GetConnectionString方法返回的值,然后将其复制到“应用程序设计器”或配置文件中。请注意,GetConnectionString方法返回的字符串包含附加的XpoProvider参数。它标识应建立连接的数据库类型。因此,由GetConnectionString方法返回的字符串与标准连接字符串格式不完全兼容。您可以在配置文件中使用此连接字符串,而无需进行修改,但是必须删除多余的参数才能在配置文件中使用该字符串。应用设计器。