1
저는 WPF 용 MVVM Light를 처음 사용합니다. VIsual Studio 2013을 사용 중이며 C#을 사용하여 프로젝트를 만들었습니다. xaml에있는 버튼에 대한 논리가 있습니다. 사용자가이 버튼을 클릭하면 앱이 데이터베이스와 데이터 테이블을 생성하고 싶습니다. 나는 중계 명령을 발사 할 xaml에 구속력있는 명령을 가지고있다. 또한 모델에 데이터베이스와 데이터 테이블을 생성하는 메소드가 있습니다. 뷰 모델에서 릴레이 명령을 만들었지 만 그 외에는 다음에 무엇을해야할지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.MVVM Light에서 논리를 수행해야합니다. 데이터베이스를 생성하기 위해 버튼을 누르십시오.
보기 - XAML
<Button Content="New Project" Margin="0,0,3,0" Command="{Binding AddProjectCommand}" IsEnabled="{Binding CommNotStreaming}" Grid.Column="2" Grid.Row="0"/>
보기 모델 -
public class ProjectConfigViewModel : ViewModelBase
{
//Binding AddProjectCommand
public RelayCommand AddProjectCommand { get; set; }
private string consoleText { get; set; }
private StringBuilder consoleBuilder = new StringBuilder(360);
public ProjectConfigViewModel()
{
this.AddProjectCommand = new RelayCommand(this.AddProject);
}
public void AddProject()
{
//Not really sure what to do here to call the ProjectDbInteraction class
}
}
모델 - 데이터베이스 상호 작용 클래스
public class ProjectDbInteraction
{
//String rawDBConnectionString = "Server=localhost; Database=12_rse_002_db; uid=root; pwd=password; Connection Timeout=5;"; //TODO Either pick a standard for make this edittable
public void CreateProjectDb(string projName)
{
try
{
MySqlConnection connection = new MySqlConnection("DataSource=localhost;UserId=root;pwd=password");
MySqlCommand command = new MySqlCommand("CREATE DATABASE " + projName + ";", connection);
connection.Open();
command.CommandText = "DROP DATABASE IF EXISTS " + projName;
command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE Projects(ProjectID INT NOT NULL, ProjectName VARCHAR(VARCHAR(255), ProjectStartDate DateTime, ProjectEndDate DateTime, ProjectNotes VARCHAR(MAX) PRIMARY KEY (ProjectID))";
command.ExecuteNonQuery();
//command.CommandText = "CREATE TABLE Metabolites(MetaboliteID VARCHAR(10) NOT NULL, Metabolite_Name VARCHAR(45) NULL, ReactionTime INT NULL, PRIMARY KEY (MetaboliteID)";
connection.Close();
}
catch (Exception)
{
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
감사합니다. 나는 테오도시우스에게 감사한다. – yams