C# WPF MVVM -将模型数据插入SQL Server数据库

b4wnujal  于 2023-11-21  发布在  C#
关注(0)|答案(1)|浏览(274)

我试图将视图中的数据发布到数据库中,但我似乎无法启动视图模型上的编辑功能,而且我也不知道为什么它不工作。
我的设置是:

  • OverledeneModel-包含数据
  • OverledeneView-包含可见零件
  • OverledeneViewModel-包含逻辑
  • IOverledeneRepository-包含命令
  • OverledeneRepository-包含实际的数据库查询

当用户按下按钮“Volgende”时,视图模型正在检查CanExecuteSaveCommand中的必填字段是否不为空或空白,下一步是ExecuteSaveCommand,其中包含。

if (UitvaartLeider.UitvaartId == Guid.Empty)
        {
            var AddUitvaartleider = overledeneRepository.AddUitvaartleider;

            if (AddUitvaartleider.ToString() != "InsertUitvaartleiderSucces")
                throw new Exception("Uitvaarleider insert has failed");
        }
        else
        {
            var EditUitvaartleider = overledeneRepository.EditUitvaartleider;
            MessageBox.Show(EditUitvaartleider.ToString());

            if (EditUitvaartleider.ToString() != "UpdateUitvaartLeiderSucces")
                throw new Exception("Uitvaartleider update has failed");
        }

字符串
然而这条线

var EditUitvaartleider = overledeneRepository.EditUitvaartLeider;


没有被执行。

public class OverledeneRepository : RepositoryBase, IOverledeneRepository
{
    public string AddUitvaartleider(OverledeneUitvaartleiderModel uitvaarLeiderModel)
    {
        using (var connection = GetConnection())
        using (var command = new SqlCommand())
        {
            connection.Open();
            command.Connection = connection;
            command.CommandText = "INSERT INTO [OverledeneUitvaartleider] ([UitvaartId], [PersoneelId], [Uitvaartnummer]) VALUES (@uitvaartId', @personeelId', @uitvaartNummer)";

            command.Parameters.Add("@uitvaartId", System.Data.SqlDbType.UniqueIdentifier).Value = uitvaarLeiderModel.UitvaartId;
            command.Parameters.Add("@personeelId", System.Data.SqlDbType.UniqueIdentifier).Value = uitvaarLeiderModel.PersoneelId;
            command.Parameters.Add("@uitvaartNummer", System.Data.SqlDbType.NVarChar).Value = uitvaarLeiderModel.Uitvaartnummer;
        }

        return "InsertUitvaartleiderSucces"; 
    }
    
    //Editing existing registration
    public string EditUitvaartleider(OverledeneUitvaartleiderModel uitvaartleiderModel)
    {
        MessageBox.Show("executed?");
        using (var connection = GetConnection())
        using (var command = new SqlCommand())
        {
            connection.Open();
            command.Connection = connection;
            command.CommandText = "UPDATE [OverledeneUitvaartleider] SET [PersoneelId] = @UitvaartLeiderId, [Uitvaartnummer] = @Uitvaartnummer WHERE [UitvaartId] = @UitvaartGuid";

            command.Parameters.Add("@UitvaartLeiderId", System.Data.SqlDbType.UniqueIdentifier).Value = uitvaartleiderModel.PersoneelId;
            command.Parameters.Add("@Uitvaartnummer", System.Data.SqlDbType.VarChar).Value = uitvaartleiderModel.Uitvaartnummer;
            command.Parameters.Add("@UitvaartGuid", System.Data.SqlDbType.UniqueIdentifier).Value = uitvaartleiderModel.UitvaartId;

            command.ExecuteNonQuery();
        }

        MessageBox.Show("done updating");

        return "Done Updating";
    }
}
public interface IOverledeneRepository
{
    //////////////////
    // CREATE & NEW //
    //////////////////
    string AddUitvaartleider(OverledeneUitvaartleiderModel uitvaarLeiderModel);

    ///////////////////
    // EDIT & UPDATE //
    ///////////////////
    string EditUitvaartleider(OverledeneUitvaartleiderModel uitvaartleiderModel);
}

的字符串
我已经阅读了stackoverflow和google,但我似乎不明白为什么它不工作。
数据位于OverledeneModel

public class OverledeneUitvaartleiderModel : ViewModelBase, IDataErrorInfo
{
    private Guid _uitvaartId;
    private Guid _personeelId;
    private string? _personeelNaam;
    private string? _uitvaartNummer;

    public Guid UitvaartId
    {
        get { return _uitvaartId; }
        set { _uitvaartId = value; OnPropertyChanged(nameof(UitvaartId)); }
    }

    public Guid PersoneelId
    {
        get { return _personeelId; }
        set { _personeelId = value; OnPropertyChanged(nameof(PersoneelId)); }
    }

    public string PersoneelNaam
    {
        get { return _personeelNaam; }
        set { _personeelNaam = value; OnPropertyChanged(nameof(PersoneelNaam)); }
    }

    public string Uitvaartnummer
    {
        get { return _uitvaartNummer; }
        set { _uitvaartNummer = value; OnPropertyChanged(nameof(Uitvaartnummer)); }
    }

    public string Error => string.Empty;

    public string this[string columnName]
    {
        get
        {
            string result = null;

            if (PersoneelId == Guid.Empty ||
                (PersoneelId == null) ||
                (string.IsNullOrEmpty(Uitvaartnummer)))
            {
                result = "Validatie velden niet correct.";
            }

            return result;
        }
    }
}


所以我完全不知道它为什么不执行。
我希望有人能解释为什么,并帮助我使它的工作。

rvpgvaaj

rvpgvaaj1#

正如鲁弗爵士所指出的,我并没有在电话中传递一个论点。

var EditUitvaartleider = overledeneRepository.EditUitvaartLeider;

字符串

var EditUitvaartleider = overledeneRepository.EditUitvaartLeider(UitvaartLeider);


这招奏效了

相关问题