动态更改连接字符串以创建数据库并将创建的文件存储在特定文件夹中

Change Connection String dynamically to create database and store the created file in specific folder

我想为我的应用程序连接 SQL 服务器数据库。我想提供两种类型的身份验证,一种是 windows 身份验证,另一种是 Sql 服务器身份验证。我尝试了以下代码。但是,我对我的文件实际存储在哪里感到困惑。

型号:

 public class DataBase : PropertyChangedBase
{
    public string Name { get; set; }

    public DatabaseType DatabaseType { get; set; }

    private AuthenticationType authenticationType;

    public AuthenticationType AuthenticationType
    {
        get { return authenticationType; }
        set
        {
            authenticationType = value;
            NotifyOfPropertyChange(() => AuthenticationType);
        }
    }

    public string UserName { get; set; }

    public string Password { get; set; }
}

身份验证:

public void WindowsAuthentication(DataBase dataBase)
    {
        TaskContext = new TaskContext(dataBase.Name);
        Tasks = GetAll();
    }

    public void ServerAuthentication(DataBase dataBase)
    {
        ConnectionString = string.Format("Data Source=.; User Id={0};Password={1};", dataBase.UserName, dataBase.Password);
        try
        {
            SqlHelper = new SqlHelper(ConnectionString);
            if (SqlHelper.IsConnection)
            {
                //AppSetting appSetting = new AppSetting();
                //appSetting.SaveConnectionString("DbConnect", ConnectionString);
                TaskContext = new TaskContext(ConnectionString);
                Tasks = GetAll();
                MessageBox.Show("Conected Successfully");
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }

Sql 服务器连接检查:

 public class SqlHelper
{
    SqlConnection SqlConnection;

    public SqlHelper(String connectionString)
    {
        SqlConnection = new SqlConnection(connectionString);
    }

    public bool IsConnection
    {
        get
        {
            if (SqlConnection.State == System.Data.ConnectionState.Closed)
                SqlConnection.Open();
            return true;
        }
    }
}

EF代码:

 public class TaskContext : DbContext
{
    public TaskContext(string connection) : base(connection)
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TaskContext>());
    }

    public DbSet<Task> Tasks { get; set; }
}

帮助我创建数据库并使用 EF 方法并将其存储在特定文件夹中

您的代码无法控制文件所在的位置,SQL服务器拥有该控制权。您所能做的就是使用连接字符串来指定服务器(IP 地址)和数据库名称。

您可以使用 Sql Management Server 找到该位置,但这并不意味着您一旦知道就可以控制它。

默认情况下将数据库文件存储在 c:\Program Files\Microsoft Sql Server 中,但这只是默认情况(并且可能会有所不同,具体取决于您 运行 服务器的 SQL 版本。