在项目的过程中,往往我们会遇到需要同时新增一条或多条的数据的问题,这时我们该如何去解决呢?这时我们就可以用到for循环,或者foreach循环,下面是我做一个订单流程的一些新增数据的过程,因为是生成订单,所以呢?会新增到不同的数据。比如,有的表只需要新增一条数据,而有的表需要新增多条数据。而我是这样处理的。
首先,要理解好新增表数据的顺序。(比如,A表里面有B表的id,而你A表新增需要B表的id时,它就会报错,因为你根本就没有B表的id),再着就是先新增需要新增一条的数据,在把多数据新增,通过循环新增就可以了。下面是我的一个新增订单流程中的一些代码: var DrawerdType = (from tbDrawerdType in myModel.PW_DrawerdType
where tbDrawerdType.DrawerdType == "待出票"
select tbDrawerdType.DrawerdType_id).Single();
SYS_Drawerd Drawerd = new SYS_Drawerd();
Drawerd.DrawerdType_id = DrawerdType;
Drawerd.OrderList_id = OrderList.OrderList_id;
myModel.SYS_Drawerd.Add(Drawerd);
if (myModel.SaveChanges() > 0)
{
for (int k = 0; k < strmyCheck.Count; k++)
{
SYS_FlightSegment FlightSegment = new SYS_FlightSegment();
FlightSegment.OrderList_id = OrderList.OrderList_id;
FlightSegment.ReservationNumber = "DW" + Randomcount(5);
FlightSegment.ReservationStatus_id = ReservationStatus[0].ReservationStatus_id;
FlightSegment.Flight_id = Convert.ToInt32(strmyCheck[k][0.ToString()]["Flight_id"]);
FlightSegment.FreightSpaceName = strmyCheck[k][1.ToString()]["FreightNumber"];
FlightSegment.Price = Convert.ToDecimal(strmyCheck[k][1.ToString()]["Price"]);
FlightSegment.FlightDate = Convert.ToDateTime(strmyCheck[k][0.ToString()]["FlightData"]);
FlightSegment.FlightNumber = strmyCheck[k][0.ToString()]["FlightNumber"];
FlightSegment.AirlineName = strmyCheck[k][0.ToString()]["AirlineName"];
FlightSegment.DepartureCity = strmyCheck[k][0.ToString()]["departureTime"];
FlightSegment.DescentCity = strmyCheck[k][0.ToString()]["descentTime"];
myModel.SYS_FlightSegment.Add(FlightSegment);
}
if (myModel.SaveChanges() > 0)
{
for (int i = 0; i < DayValue.Count; i++)
{
int CredentialsType_id = Convert.ToInt32(DayValue[i]["CredentialsType_id"]);
string CredentialsCode = DayValue[i]["CredentialsCode"];
PW_Credentials listData;
try
{
var b = SelectCredentials.Where(m => m.CredentialsType_id == CredentialsType_id && m.CredentialsCode == CredentialsCode).ToList();
listData = SelectCredentials.Where(m => m.CredentialsType_id == CredentialsType_id && m.CredentialsCode == CredentialsCode).Single();
var s = ((dynamic)DayValue[i]).Holder;
var a = DayValue[i]["Holder"];
if (listData.Holder != ((dynamic)DayValue[i]).Holder)
{
msg.Text = "请输入正确的证件信息!";
return Json(msg, JsonRequestBehavior.AllowGet);
}
state = true;
NowTravellers[i].Credentials_id = listData.Credentials_id;
}
catch (Exception e)
{
PW_Credentials Credentials = new PW_Credentials();
Credentials.Holder = DayValue[i]["Holder"];
Credentials.CredentialsType_id = Convert.ToInt32(DayValue[i]["CredentialsType_id"]);
Credentials.CredentialsCode = DayValue[i]["CredentialsCode"];
Credentials.UserBirthday = DayValue[i]["DirthTime"];
myModel.PW_Credentials.Add(Credentials);
if (myModel.SaveChanges() > 0)
{
state = true;
int Credentials_id = Credentials.Credentials_id;
Session["Credentials_id"] = Credentials_id;
}
}
上面这些代码,是新增一条数据到用循环新增多条数据的一段代码。下面是获取到的数据,因为软件的问题,所以只能截到获取到的总数据,可以看到这些数据有的是多条,有的只是一条: