繁体   English   中英

使用Entity Framework和动态Json将范围标识插入第二个表

[英]Inserting Scope identity into second table using Entity Framework and dynamic Json

我有两个表,如下所示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中,我在webservice webmethod中以动态json对象的形式获取多个记录,如下所示(InsertData)。 通过使用IList和Entity框架,我可以插入多个记录。

我的要求是在插入客户记录时,我要从客户表中插入一些字段,并在客户贷款表中插入额外的字段。

最后,我要插入从客户表生成的cutomerId以及CustomerLoan表中的其他几个字段。

例如:客户

customerId  customerName    Age
100 John    32
101 Jacob   35

例如:客户贷款

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值之外的对象。 如果有人可以帮助在客户贷款中插入身份值客户表,我们将不胜感激。

首先使用context.SaveChanges()将客户对象保存到数据库中; 然后尝试添加客户贷款(现在您应该可以找到客户ID)并使用context.SaveChanges();再次保存到数据库中。

它可能有其他方法可以做到,但这就是我所知道的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM