C# 为什么这些记录以看似随机的顺序写入数据库?
我有一个方法,它基于两个表单变量创建一个工作日列表,C# 为什么这些记录以看似随机的顺序写入数据库?,c#,sql-server,asp.net-core,entity-framework-core,C#,Sql Server,Asp.net Core,Entity Framework Core,我有一个方法,它基于两个表单变量创建一个工作日列表,numodies和FirstDay,并将其写入数据库。如果我创建的周期为16天或更少,那么这些天都会以完美的顺序写入数据库,但是如果我尝试创建17天或更多天的周期,则顺序似乎是随机的 以下是我的方法: [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create(int NumOfDays, int FirstDay, [Bind(
numodies
和FirstDay
,并将其写入数据库。如果我创建的周期为16天或更少,那么这些天都会以完美的顺序写入数据库,但是如果我尝试创建17天或更多天的周期,则顺序似乎是随机的
以下是我的方法:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(int NumOfDays, int FirstDay,
[Bind("BranchId,Title")] SchedulePeriod schedulePeriod)
{
if (ModelState.IsValid)
{
SchedulePeriodViewModel vm = auto.Map<SchedulePeriodViewModel>(schedulePeriod);
vm.NumOfDays = NumOfDays;
vm.FirstDay = FirstDay;
SchedulePeriodValidator validator = new SchedulePeriodValidator();
ValidationResult result = validator.Validate(vm);
if (result.IsValid)
{
List<ScheduleDay> days = new List<ScheduleDay>();
string[] dayNames = { "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday" };
for (int i = 0; i < vm.NumOfDays; i++)
{
days.Add(new ScheduleDay { Title = dayNames[(vm.FirstDay + i) % 7]} );
}
schedulePeriod.ScheduleDays = days;
db.Add(schedulePeriod);
await db.SaveChangesAsync();
return RedirectToAction("Details", "SchedulePeriods",
new { id = schedulePeriod.Id });
}
else
{
// handle invalid validation result
}
}
return View(auto.Map<SchedulePeriodViewModel>(schedulePeriod));
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建(int numodies、int FirstDay、,
[Bind(“BranchId,Title”)]计划期(SchedulePeriod)
{
if(ModelState.IsValid)
{
SchedulePeriodViewModel vm=auto.Map(schedulePeriod);
vm.NumOfDays=NumOfDays;
vm.FirstDay=第一天;
SchedulePeriodValidator validator=新SchedulePeriodValidator();
ValidationResult=validator.Validate(vm);
if(result.IsValid)
{
列表天数=新列表();
string[]dayNames={“星期一”、“星期二”、“星期三”,
“星期四”、“星期五”、“星期六”、“星期日”};
对于(int i=0;i
以下是各时期的模型:
public class SchedulePeriod
{
public int Id { get; set; }
public int BranchId { get; set; }
public string Title { get; set; }
public List<ScheduleDay> ScheduleDays { get; set; }
public Branch Branch { get; set; }
}
public class ScheduleDay
{
public int Id { get; set; }
public int SchedulePeriodId { get; set; }
public string Title { get; set; }
public List<ScheduleShift> ScheduleShifts { get; set; }
public SchedulePeriod SchedulePeriod { get; set; }
}
公共类调度周期
{
公共int Id{get;set;}
公共整数{get;set;}
公共字符串标题{get;set;}
公共列表ScheduleDays{get;set;}
公共分支{get;set;}
}
公课时间表
{
公共int Id{get;set;}
public int SchedulePeriodId{get;set;}
公共字符串标题{get;set;}
公共列表时间表{get;set;}
公共SchedulePeriod SchedulePeriod{get;set;}
}
为什么它在长达16天的时间内按预期工作,但在17天或更长时间内始终失败?在关系数据库概念和MS SQL中,表/关系中没有行/元组的顺序。所以你不应该依赖它。要实现排序,您需要为此使用一个字段,然后在查询时在
ORDER BY
中使用该字段
摘自维基百科文章:
根据body的定义,body的元组不会以任何特定的顺序出现
在关系数据库概念和MS SQL中,表/关系中的行/元组没有顺序。所以你不应该依赖它。要实现排序,您需要为此使用一个字段,然后在查询时在
ORDER BY
中使用该字段
摘自维基百科文章:
根据body的定义,body的元组不会以任何特定的顺序出现
我相信大家都想知道你用的是哪种数据库系统。但无论如何,关系数据库不能保证表中的行顺序。您需要为订购添加另一个字段。并在查询时与orderby一起使用。我相信大家都想知道您使用的是哪种数据库系统。但无论如何,关系数据库不能保证表中的行顺序。您需要为订购添加另一个字段。并在查询时与ORDER BY一起使用。