簡體   English   中英

在帶有MVVM的WPF中使用實體框架插入新記錄

[英]Inserting new record using Entity Framework in WPF with MVVM

我正在嘗試創建一個視圖,該視圖允許用戶將記錄插入數據庫。 該項目是根據MVVM體系結構構造的。

在我看來,我像這樣綁定UI元素:

<StackPanel Orientation="Horizontal">
      <Label Width="200">Equipment Number</Label>
      <TextBox Width='150'
               Text="{Binding Equipment.EquipmentSerialnumber, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
    </StackPanel>

該視圖綁定到一個視圖模型,該視圖模型包含正在修改的當前屬性:

public Equipment Equipment
{
    get { return _equipment; }
    private set
    {
    _equipment = value;
    OnPropertyChanged();
    }
}

在我看來,我有一個綁定到命令的按鈕,它創建了一個新的委托命令。 因此,在我的視圖模型的構造函數中,我將方法設置為在按下按鈕時執行:

CreateEquipmentCommand = new DelegateCommand(OnCreateEquipmentExecute, OnEquipmentCreateCanExecute);

我正在使用Prism.Core實現此目的。 當用戶單擊按鈕時,此方法稱為:

private async void OnCreateEquipmentExecute()
{
    var equipment = CreateNewEquipment();
    await _equipmentRepository.SaveAsync(); 
}

然后調用CreateNewEquipment方法,在創建設備后將其添加到存儲庫中。

var equipment = new Equipment();
_equipmentRepository.Add(equipment);
return equipment;

我的倉庫是有狀態的,並保持與數據庫的連接。 這是添加方法:

public void Add(Equipment equipment)
{
    _context.Equipments.Add(equipment);
}

SaveAsync()應該保存對db上下文所做的所有更改,從而創建一個insert語句。

但是,當我單擊該按鈕時,我試圖插入的設備中沒有顯示該視圖中的值。 我不確定為什么會這樣。 它給了我一個缺少值的驗證錯誤。

您創建了新的設備,但沒有映射綁定視圖模型中的值。 因此,在您的CreateNewEquipment方法中,您應該執行以下操作:

var equipment = new Equipment(){EquipmentSerialnumber = _equipment.EquipmentSerialnumber};
_equipmentRepository.Add(equipment);
return equipment;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM