我正在给每日计数器编码。数据库计数器表为空。如果有人是我当天的第一个访问者,那么我将向数据库中添加一个记录,并将counter设置为1;之后,当其他访客访问当天时,我将增加计数器++并更新记录。
所以我的记录一定是这样的:
01
柜台:23
02
计数器:65
日期:2018-10-
03
日期:2018-10-
04
柜台:89
我的问题是:如果站点在同一时间获得访客,linq为同一天保存2条记录。这样地:
日期:2018-10-
日期:2018-10-02计数器:1//第一条记录:counter=1
日期:2018-10-
03
计数器:20
计数器:1//第一条记录
04
日期必须唯一。如何解决这个问题?我的代码在下面。谢谢。
public static int IncreaseCounter_DailySiteVisitors()
{
int counter = 0;
using (var context = new MyProjectEntities())
{
try
{
string format = "dd.MM.yyyy";
DateTime Today = DateTime.Now;
var obj = (from record in context.CounterDailySiteVisitor
where
record.DateRecord != null
&& record.DateRecord.HasValue
&& record.DateRecord.Value.Year == Today.Year
&& record.DateRecord.Value.Month == Today.Month
&& record.DateRecord.Value.Day == Today.Day
select record).FirstOrDefault();
//var obj = context.CounterDailyVisitor.Where(x => x.DateRecord != null && ((DateTime)x.DateRecord).ToString("yyyy.MM.dd") == DateTime.Now.ToString("yyyy.MM.dd")).FirstOrDefault();
if (obj != null)
{
counter = obj.Count ?? 0;
counter++;
obj.Count = counter;
context.SaveChanges();
}
else
{
var newRecordObj = context.CounterDailySiteVisitor.Create();
newRecordObj.Count = 1;
newRecordObj.DateRecord = Today;
context.CounterDailySiteVisitor.Add(newRecordObj);
context.SaveChanges();
}
}
catch (Exception e)
{
}
}
return counter;
}