mvvm несколько бизнес-уровней - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть класс DataContext (который наследует DbContext)

public class DataContext : DbContext
{
    public DataContext() : base("Default")
    {

    }

    public DbSet<Scale> Scales { get; set; }

    public DbSet<Administrator> Administrators { get; set; }

    public DbSet<User> Users { get; set; }
}

Также у меня есть класс BusinessContext, в котором я выполняю все операции с базой данных, такие как добавление новой, редактирование и удаление сущности.

public sealed class BusinessContext : IDisposable
{
    private readonly DataContext context;
    private bool disposed;

    public BusinessContext()
    {
        context = new DataContext();
    }

    public DataContext DataContext
    {
        get
        {
            return context;
        }
    }

    #region ScaleScenarios

    public void AddNewScale(Scale scale)
    {
        context.Scales.Add(scale);
        context.SaveChanges();
    }

    public void UpdateScale(Scale scale)
    {


        context.Entry(scale).CurrentValues.SetValues(scale);
        context.SaveChanges();
    }

    public ICollection<Scale>GetAllScales()
    {
        return context.Scales.OrderBy(prop => prop.Id).ToArray();
    }

    #endregion

    #region IDisposable Members

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private void Dispose(bool disposing)
    {
        if (disposed || !disposing)
        {
            return;
        }

        if (context != null)
        {
            context.Dispose();
        }

        disposed = true;
    }

    #endregion
}

Должен ли я теперь создать отдельный BusinessContext для других объектов (Пользователь, Администратор) или я должен поместить все операции для всех объектов в 1 класс?Кроме того, когда я открываю новый диалог (для входа в систему), я должен передать BusinessContext родительского ViewModel в DialogViewModel или просто создать новый экземпляр BusinessContext в конструкторе DialogViewModel, как я делал в MainWindow?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...