MVC 5.0 奇怪的行为
MVC 5.0 strange behavior
当我运行这个动作每次都增加rating.Likes
。
我能帮忙吗?
public ActionResult Like(int id)
{
ApplicationDbContext db = new ApplicationDbContext();
var rating = db.Ratings.FirstOrDefault(x => x.id == id);
if (!(rating.RatedFrom.Contains(User.Identity.Name)))
{
rating.Likes++;
rating.RatedFrom.Add(User.Identity.Name);
}
rating.Views--;
db.SaveChanges();
return RedirectToAction("Details", db.ImageModels.FirstOrDefault(x => x.id == id));
}
1) 创建 RatedFrom
class:
public class RatedFrom
{
public int Id {get; set;}
public string UserName {get; set;}
public DateTime RatedDate {get; set;}
/*Other properties*/
}
2) 在 Ratings
设置 RatedFrom
public class Rating
{
/*Other properties*/
public virtual ICollection<RatedFrom> RatedFromList {get; set;}
public Rating()
{
/*Other properties initialization*/
RatedFromList = new List<RatedFrom>();
}
}
3) 在 DbContext
处设置 RatedFrom
以映射到数据库:
public DbSet<RatedFrom> RatedFrom { get; set; }
4) 更改控制器代码:
if (!(rating.RatedFromList.Where(x=> x.UserName == User.Identity.Name).Count() > 0))
{
rating.Likes++;
rating.RatedFrom.Add(new RatedFrom { UserName = User.Identity.Name });
}
大功告成!鉴于您使用的是编码优先。如果您使用数据库优先,则必须手动创建 class mapp:Mapping to Existing Table in the Database
当我运行这个动作每次都增加rating.Likes
。
我能帮忙吗?
public ActionResult Like(int id)
{
ApplicationDbContext db = new ApplicationDbContext();
var rating = db.Ratings.FirstOrDefault(x => x.id == id);
if (!(rating.RatedFrom.Contains(User.Identity.Name)))
{
rating.Likes++;
rating.RatedFrom.Add(User.Identity.Name);
}
rating.Views--;
db.SaveChanges();
return RedirectToAction("Details", db.ImageModels.FirstOrDefault(x => x.id == id));
}
1) 创建 RatedFrom
class:
public class RatedFrom
{
public int Id {get; set;}
public string UserName {get; set;}
public DateTime RatedDate {get; set;}
/*Other properties*/
}
2) 在 Ratings
RatedFrom
public class Rating
{
/*Other properties*/
public virtual ICollection<RatedFrom> RatedFromList {get; set;}
public Rating()
{
/*Other properties initialization*/
RatedFromList = new List<RatedFrom>();
}
}
3) 在 DbContext
处设置 RatedFrom
以映射到数据库:
public DbSet<RatedFrom> RatedFrom { get; set; }
4) 更改控制器代码:
if (!(rating.RatedFromList.Where(x=> x.UserName == User.Identity.Name).Count() > 0))
{
rating.Likes++;
rating.RatedFrom.Add(new RatedFrom { UserName = User.Identity.Name });
}
大功告成!鉴于您使用的是编码优先。如果您使用数据库优先,则必须手动创建 class mapp:Mapping to Existing Table in the Database