我有两个表,如下所示 1)客户
customerId Int (primary key)
customerName Varchar(50)
Age Int
2)客户贷款
Id Int
customerId Int (Foreign key)
customerName Varchar(50)
Age Int
Loan float
从我的jquery中,以web服务web方法的动态json对象的形式获取了多个记录,如下所示(InsertData)。 通过使用IList和Entity框架,我可以插入多个记录。
我的要求是在插入客户记录时,我要从客户表中插入一些字段,并在客户贷款表中插入额外的字段。
我要插入从客户表生成的cutomerId,并在CustomerLoan表中添加更多字段。
Ex:客户
customerId customerName Age
100 John 32
101 Jacob 35
例如:CustomerLoan
Id customerId customerName Age Loan
1 100 John 32 1500
2 101 Jacob 35 2000
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public dynamic InsertData(int revision, int appID, dynamic jsonMaster)
{
dynamic json = jsonMaster;
IList<Customer> customers = ((object[])json).Select(t => new Customer
{
customerId = Convert.ToInt32((((IDictionary)t)["customerId"]) ?? -1),
customerName = ((((IDictionary)t)["customerName"]) ?? "").ToString(),
Age = Convert.ToInt32(((IDictionary)t)["Age"]),
Revision = Convert.ToInt32((((IDictionary)t)["Revision"])),
}).ToList(); ;
lock (_updatePointsLock)
{
using (CustomerEntities context = new CustomerEntities())
{
int currentRevision = context.Customer.Max(x => x.Revision) ?? 0;
if (currentRevision >= revision)
{
foreach (Customer cobj in customers)
{
Customer obj = context.Customer.Where(x => x.customerId == cobj.salesMasterId).FirstOrDefault();
if (obj == null)
{
cobj.Revision = currentRevision + 1;
context.Customer.Add(cobj);
**CustomerLoan objLoan = new CustomerLoan();
objLoan.customerId = cobj.customerId;
objLoan.customerName = cobj.customerName;
objLoan.Age = cobj.Age;
objLoan.customerLoan = 1500;
context.CustomerLoan.Add(objLoan);**
}
else
{
obj.customerName = cobj.customerName;
obj.Age = cobj.Age;
obj.Revision = currentRevision + 1;
}
}
context.SaveChanges();
return new
{
Revision = currentRevision + 1,
Customer = context.Customer.Where(x => x.Revision > revision).Select(x => new
{
x.customerId,
x.customerName,
x.Age,
Revision = x.Revision,
}).ToList()
};
}
else
{
return new { Revision = revision };
}
}
}
}
将上述代码(-1)值插入到customerLoan表的customerId字段中。 如果创建要插入的对象,则无法获取客户的foreach值之外的对象。 如果有人可以帮助将标识值的客户表插入到customerLoan中,则表示赞赏。
答案 0 :(得分:0)
首先使用context.SaveChanges()将客户对象保存到数据库中; 然后尝试添加客户贷款(现在您应该可以找到客户ID)并使用context.SaveChanges();
再次保存到数据库中。它可能还有其他方法,但这是我所知道的方式。