C# 将方法添加到类DbSet<;张力>;
我正在使用asp.net mvc 5,希望在类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) {
主题中实现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();
}