2008-11-13 4 views
8

데이터를 추가 할 테이블이 두 개인 간단한 시나리오가 있습니다. 이들은 기본 키/외래 키로 관리됩니다. 테이블 A에 새 데이터를 추가하고 ID를 검색하여 테이블 B에 삽입하려고합니다.Linq, ASP.NET MVC를 사용하여 여러 데이터베이스 테이블에 삽입

확실히 저장 프로 시저를 사용할 수는 있지만 Linq를 사용하여 수행하려고합니다.

최상의 접근 방법은 무엇입니까?

나는 확실히 ID를 얻을 수 있고 2 개의 분리 된 삽입을 할 수 있지만 확실히 일을하는 아주 좋은 방법 인 것 같지 않습니다.

db.Table.InsertOnSubmit(dbObject); 
db.SubmitChanges(); 

Int32 id = dbOject.Id; 

//Rest of the code 

우아하게 할 수있는 방법은 없나요?

답변

13

관계형 디자인의 두 테이블간에 정의 된 관계가 있습니까? 그렇다면 linq가 두 번째 테이블의 ID 속성을 자동으로 할당하도록 처리 할 수 ​​있습니다.

예 ...
표 A - 주문
ORDERID
주문일

표 B - 주문 항목
OrderItemId
ORDERID
항목 Id

코드 (사용 LINQ - 투 - SQL) :

Order order = new Order(); 
Order.OrderDate = DateTime.Now(); 
dataContext.InsertOnSubmit(order); 

OrderItem item1 = new OrderItem(); 
Item1.ItemId = 123; 
//Note: We set the Order property, which is an Order object 
// We do not set the OrderId property 
// LINQ will know to use the Id that is assigned from the order above 
Item1.Order = order; 
dataContext.InsertOnSubmit(item1); 

dataContext.SubmitChanges(); 
1

안녕하세요,이 코드를 사용하여 세 테이블에 데이터를 삽입합니다.

Product_Table AddProducttbl = new Product_Table(); 
     Product_Company Companytbl = new Product_Company(); 
     Product_Category Categorytbl = new Product_Category(); 

     // genrate product id's 
     long Productid = (from p in Accountdc.Product_Tables 
         select p.Product_ID).FirstOrDefault(); 
     if (Productid == 0) 
      Productid++; 
     else 
      Productid = (from lng in Accountdc.Product_Tables 
         select lng.Product_ID).Max() + 1; 
     try 
     { 
      AddProducttbl.Product_ID = Productid; 
      AddProducttbl.Product_Name = Request.Form["ProductName"]; 
      AddProducttbl.Reorder_Label = Request.Form["ReorderLevel"]; 
      AddProducttbl.Unit = Convert.ToDecimal(Request.Form["Unit"]); 
      AddProducttbl.Selling_Price = Convert.ToDecimal(Request.Form["Selling_Price"]); 
      AddProducttbl.MRP = Convert.ToDecimal(Request.Form["MRP"]); 
      // Accountdc.Product_Tables.InsertOnSubmit(AddProducttbl); 
      // genrate category id's 
      long Companyid = (from c in Accountdc.Product_Companies 
           select c.Product_Company_ID).FirstOrDefault(); 
      if (Companyid == 0) 
       Companyid++; 
      else 
       Companyid = (from Ct in Accountdc.Product_Companies 
          select Ct.Product_Company_ID).Max() + 1; 

      Companytbl.Product_Company_ID = Companyid; 
      Companytbl.Product_Company_Name = Request.Form["Company"]; 

      AddProducttbl.Product_Company = Companytbl; 
      //Genrate Category id's 
      long Categoryid = (from ct in Accountdc.Product_Categories 
           select ct.Product_Category_ID).FirstOrDefault(); 
      if (Categoryid == 0) 
       Categoryid++; 
      else 
       Categoryid = (from Ct in Accountdc.Product_Categories 
           select Ct.Product_Category_ID).Max() + 1; 
      Categorytbl.Product_Category_ID = Categoryid; 
      Categorytbl.Product_Category_Name = Request.Form["Category"]; 
      AddProducttbl.Product_Category = Categorytbl; 

      Accountdc.Product_Tables.InsertOnSubmit(AddProducttbl); 
      Accountdc.SubmitChanges(); 

     } 
     catch 
     { 
      ViewData["submit Error"] = "No Product Submit"; 
     } 
관련 문제