inotifypropertychange, автоматически сгенерированный MVVM с dbContext и оболочкой viewModels - PullRequest
0 голосов
/ 14 апреля 2020

Я автоматически сгенерировал свои модели и модель базы данных EF и теперь хочу добавить inotifypropertychanged в мои viewModels. Я посмотрел в Интернете и увидел, что мне нужно создать оболочку для автоматически сгенерированных свойств в моей модели представления, но у меня есть 2 набора свойств, которые подключаются к БД.

У меня есть два сгенерированных файла модели ENTITETI и dbEnt

ENTITETI

public partial class ENTITETI
{
    public string NAZIV { get; set; }
    public Nullable<int> ENT_SIF { get; set; }
}

dbEnt

public partial class dbEnt: DbContext
{
    public dbEnt()
        : base("name=dbEnt")
    {  }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<ENTITETI> ENTITETIs { get; set; }
}

ENTITETI привязан к виду

<DataGrid.Columns>
<DataGridTextColumn Header="Ent Šifra" Binding="{Binding Path=ENT_SIF, UpdateSourceTrigger=PropertyChanged}" Width="60" />
<DataGridTextColumn Header="Naziv Entitet" Binding="{Binding Path=NAZIV, UpdateSourceTrigger=PropertyChanged}" Width="125"/>
<DataGridTemplateColumn>

И, наконец, я снова определил свойства ENTITETI в моей viewModel и добавил проверку inotifypropertychanged в столбцы набора этих свойств. Примечание. Уведомитель содержит необходимый код для inotifypropertychanged

public class HelperEntitet : Notifier
{
    dbEnt_db = new dbEnt();
    private ENTITETI _entiteti;

    public ENTITETI ENTITETI
    {
        get { return _entiteti; }
    }
    public HelperEntitet()
    { this._entiteti = _entiteti; }

    public Nullable<int> ENT_SIF
    {
        get { return _entiteti.ENT_SIF; }
        set
        {
            _entiteti.ENT_SIF = value;
            OnPropertyChanged("ENT_SIF");
        }
    }

    public string NAZIV
    {
        get { return _entiteti.NAZIV; }
        set
        {
            _entiteti.NAZIV = value;
            OnPropertyChanged("NAZIV");
        }
    }

    public string InsertEnt(string entAKT, string entSIF, string entKANT, string entNAZ)
    {
        ENTITETI newMember = new ENTITETI()
        {
            ENT_SIF = Convert.ToInt32(entSIF),
            NAZIV = entNAZ,
        };

        _db.ENTITETIs.Add(newMember); ------------> This is my issue

        _db.SaveChanges();

        return "OK";

        }
    }

. Моя проблема заключается в том, что я не знаю, как объединить свойства ENTITETI (ENT_SIF) и определенные свойства ENTIETI, найденные в сгенерированном файле dbEnt. Когда я запускаю код, он работает, данные добавляются в базу данных, но не регистрируются в измененном свойстве. И это имеет смысл для меня, так как я не касаюсь этих определенных свойств, но я не уверен, как объединить их. Или я неправильно понимаю, как INotifyPropertyChanged должен и работает.

Также мой класс уведомителей

public class Notifier : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            Debug.WriteLine("SUCCESS SOMETHING HAS HAPPENED")
        }
        else
        {
            Debug.WriteLine("NOTHING HAS HAPPENED")
        }

    }
}
...