C# 将方法添加到类DbSet<;张力>;

C# 将方法添加到类DbSet<;张力>;,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我正在使用asp.net mvc 5,希望在类主题中实现3种方法(添加/更新/删除): class Topic : IDisposable { public Topic() { } private TopicViewModels Model { get; set; } private string Flag { get; set; } public void Add(TopicViewModels model) {

我正在使用asp.net mvc 5,希望在类
主题
中实现3种方法(添加/更新/删除):

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();
        }
}
在类中
DbSet

我希望在“更新”情况下实现的目标:


我的子问题是:有没有另一种方法可以不使用标志而准确地调用方法
savechangesync

public void Update<T>(T entity) where T:class
{
        db.Entry<T>(entity).State = EntityState.Modified;
        db.SaveChanges();
}
公共无效更新(T实体),其中T:class
{
db.Entry(entity.State=EntityState.Modified;
db.SaveChanges();
}

我强烈建议将您的标志从
string
更改为
enum
switch (Flag)
{
    case "Update":
        db.Topics.Update(Model);
        break;
}
public void Update<T>(T entity) where T:class
{
        db.Entry<T>(entity).State = EntityState.Modified;
        db.SaveChanges();
}