[英]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.