简体   繁体   English

将方法添加到类 DbSet<TEntity>

[英]Add method to class DbSet<TEntity>

I'm working on asp.net mvc 5 and want to implement 3 methods (Add / Update / Remove) to class Topic :我正在研究 asp.net mvc 5 并希望对类Topic实现 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();
        }
}

My question: how can I declare method我的问题:我如何声明方法

public virtual TEntity Update(TEntity entity); 

in class DbSet<TEntity> ?在类DbSet<TEntity>

What I want to achieve in case "Update":我想在“更新”的情况下实现什么:

switch (Flag)
{
    case "Update":
        db.Topics.Update(Model);
        break;
}

And my sub-question: is there another way to call method SaveChangesAsync exactly without using a flag?我的子问题:是否有另一种方法可以在不使用标志的情况下完全调用方法SaveChangesAsync

You can do something like;你可以做类似的事情;

public void Update<T>(T entity) where T:class
{
        db.Entry<T>(entity).State = EntityState.Modified;
        db.SaveChanges();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM