-1
Я работаю на ASP.NET MVC 5 и хотите реализовать 3 метода (Добавить/Обновить/Удалить) в класс Topic
:Добавить метод класса DbSet <TEntity>
class Topic : IDisposable
{
public Topic() { }
private TopicViewModels Model { get; set; }
private string Flag { get; set; }
public void Add(TopicViewModels model)
{
Model = model;
Flag = "Add";
}
public void Update(TopicViewModels model)
{
Model = model;
Flag = "Update";
}
public void Remove(TopicViewModels model)
{
Model = model;
Flag = "Remove";
}
public async Task<int> SaveChangesAsync()
{
using (var db = new MyDbContext())
{
switch (Flag)
{
case "Add":
db.Topics.Add(Model);
break;
case "Update":
var topic = await db.Topics.SingleAsync(x => x.Id == Model.Id);
topic = Model;
break;
case "Remove":
db.Topics.Remove(Model);
break;
}
return await db.SaveChangesAsync();
}
}
public void Dispose()
{
throw new NotImplementedException();
}
}
Мой вопрос: как я могу объявить метод
public virtual TEntity Update(TEntity entity);
в классе DbSet<TEntity>
?
То, что я хочу достичь в случае «Update»:
switch (Flag)
{
case "Update":
db.Topics.Update(Model);
break;
}
И мой суб-вопрос: есть ли другой способ вызова метода SaveChangesAsync
точно без использования флага?
Я настоятельно рекомендую изменить свой флаг из 'string' в' enum'. –