C# MVC ASP.NET写入数据库是无意中循环的
我对MVC和ASP.NET非常陌生,但我遇到了一个奇怪的问题 我将向数据库中添加一个条目,然后保存更改,但实际情况并非如此C# MVC ASP.NET写入数据库是无意中循环的,c#,asp.net,asp.net-mvc,database,visual-studio,C#,Asp.net,Asp.net Mvc,Database,Visual Studio,我对MVC和ASP.NET非常陌生,但我遇到了一个奇怪的问题 我将向数据库中添加一个条目,然后保存更改,但实际情况并非如此 [Authorize] public ActionResult EggRecieved() { //CHECK IF THEY HAVE RECIEVED EGG IN LAST DAY var user = db.PDCUsers.SingleOrDefault(x => x.Username == User.Ide
[Authorize]
public ActionResult EggRecieved()
{
//CHECK IF THEY HAVE RECIEVED EGG IN LAST DAY
var user = db.PDCUsers.SingleOrDefault(x => x.Username == User.Identity.Name);
var userId = user.Id;
var possibleEggs = db.PkmnDatas.Where(x => x.CanBeEgg == true);
var rand = new Random();
var no = rand.Next(0, possibleEggs.Count());
var pokemonArray = possibleEggs.ToArray();
var pokemon = pokemonArray[rand.Next(0, pokemonArray.Count())];
Boolean? isMale = null;
if (pokemon.GenderRatio != null)
{
isMale = rand.Next(0, 1000) < pokemon.GenderRatio1.ChanceMale * 1000;
}
var isShiny = 1 == rand.Next(1,Constants.SHINYCHANCE);
//GET THE ABILITIES
db.PlayerPkmns.Add(new PlayerPkmn
{
PkmnDataId = pokemon.Id,
Nickname = pokemon.Name,
IsMale = (bool)isMale,
Nature = rand.Next(1, 25),
Ability = 1,
EggObtained = DateTime.Now,
Shiny = isShiny,
CurrentTrainerId = userId,
OriginalTrainerId = userId,
StepsToHatch = Constants.TOTALSTEPSFOREGGHATCH
});
db.SaveChanges();
return EggRecieved();
}
[授权]
公共行动结果(已收到)
{
//检查他们是否在最后一天收到了鸡蛋
var user=db.pdccusers.SingleOrDefault(x=>x.Username==user.Identity.Name);
var userId=user.Id;
var possibleEggs=db.PkmnDatas.Where(x=>x.CanBeEgg==true);
var rand=new Random();
var no=rand.Next(0,possibleEggs.Count());
var pokemonArray=possibleEggs.ToArray();
var pokemon=pokemonArray[rand.Next(0,pokemonArray.Count())];
布尔值?isMale=null;
if(pokemon.GenderRatio!=null)
{
isMale=rand.Next(0,1000)
当我点击一个按钮调用这个方法时,服务器会花半分钟的时间说它无法访问视图
然后我检查我的数据库,我有500多个新的数据行
我不确定发生了什么,但它似乎在不断调用这个方法并写入数据库
有人知道为什么,以及我如何修复它吗?您最终递归调用了该方法,使用
return EggRecieved();
您应该在那里返回一个ActionResult
,如
return View("MyView");
发生这种情况是因为在return语句中,您写道:
return EggRecieved();
这意味着您再次调用同一个方法,它陷入了无休止的循环抛出错误。用你的视图或Json等删除它。你在代码末尾写的是return eggReceived(),它是worng, 您需要返回所需的视图()。 因此,替换接收到视图()的eggg;因为当您返回eggReceived()时,每次它都会进行递归循环和调用
谢谢你我觉得自己很笨。深夜编码不是最有效的