방법: 특정 엔터티 집합에 개체 추가(Entity Framework)

이 항목에서는 방법: 유형별 다중 엔터티 집합으로 모델 정의(Entity Framework) 항목에서 디자인한 EDM(엔터티 데이터 모델)을 사용합니다.

유형별 다중 엔터티 집합을 사용하여 응용 프로그램을 만들려면

  1. 콘솔 응용 프로그램 프로젝트를 만들고 System.Data.EntitySystem.Runtime.Serialization에 대한 참조를 추가합니다.

  2. 방법: 유형별 다중 엔터티 집합으로 모델 정의(Entity Framework) 항목에서 정의한 데이터 모델에서 빌드한 dll에 대한 참조를 추가합니다.

  3. 응용 프로그램 구성 파일을 추가합니다. 다음 구문에서는 스키마 메타데이터에 대한 경로와 데이터를 호스팅하는 서버에 대한 연결 문자열을 제공합니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="RegionalCustomersEntities" 
         connectionString="metadata=.;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
         Data Source=serverName;
         Initial Catalog=RegionalCustomersMEST;
         Integrated Security=True;
         multipleactiveresultsets=true&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

서부 지역을 나타내는 엔터티 집합에 고객 및 주문 엔터티 추가

다음 코드는 Customer 형식의 새 인스턴스를 만들어 이를 서부 지역을 나타내는 엔터티 집합에 추가합니다.

같은 형식의 엔터티를 별도의 엔터티 집합에 추가하려면

  1. CustomerWest 형식의 인스턴스를 만들고 고객의 CustomerId, Name, TotalPurchases 속성을 초기화합니다.

  2. OrderWest 형식의 인스턴스를 만들고 주문의 속성을 초기화합니다.

  3. 1단계에서 만든 고객을 새 주문에 할당합니다.

  4. AddTCustomersWestAddToOrdersWest 메서드를 사용하여 CustomerWestOrderWest의 인스턴스를 저장소에 추가합니다. 이러한 메서드는 Edmgen.exe에서 데이터 모델을 생성할 때 만들어집니다.

  5. newOrder라는 이름의 다른 OrderWest 인스턴스를 만듭니다.

  6. 1단계에서 만든 고객에 대한 쿼리에서 사용할 ObjectParameter를 만듭니다.

  7. 쿼리를 실행하여 고객을 찾습니다.

  8. newOrderTotalAmount 속성을 고객의 TotalPurchases에 추가하여 고객의 TotalPurchases 속성을 업데이트합니다.

  9. 고객을 newOrder에 할당합니다.

  10. AddToOrdersWest 메서드를 사용하여 newOrder를 저장소에 추가합니다.

예제

Option Explicit On
Module Module1
    Sub Main()
        Try
            Using objCtx As RegionalCustomersEntities = _
                        New RegionalCustomersEntities()

                ' Create a new customer.
                Dim customerWest As New Customer()
                customerWest.CustomerId = _
                         objCtx.CustomersWest.Count() + 1
                customerWest.Name = _
                         "CustomerWest " + _
                              customerWest.CustomerId.ToString()
                customerWest.TotalPurchases = CType(875, Decimal)

                ' Create Order.
                Dim orderWest As New OrderWest()
                orderWest.OrderId = _
                         objCtx.OrdersWest.Count() + 1
                orderWest.OrderTotal = customerWest.TotalPurchases
                orderWest.Tax = _
                         orderWest.OrderTotal * CType(0.07, Decimal)

                orderWest.Customer = customerWest

                ' Add customer and order to object context.
                objCtx.AddToCustomersWest("customerWest)
                objCtx.AddToOrdersWest(orderWest)

                objCtx.SaveChanges()

                ' Add order to existing customer.
                Dim newOrder As New OrderWest
                newOrder.OrderId = objCtx.OrdersWest.Count + 1
                newOrder.OrderTotal = CType(338.0, Decimal)
                newOrder.Tax = newOrder.OrderTotal * CType(0.07, Decimal)

                Dim param As New ObjectParameter("p", 3)
                If Not 0 = objCtx.CustomersWest. _
                      Where("it.CustomerId = @p", param).Count() Then
                    Dim c As Customer = _
                        objCtx.CustomersWest. _
                        Where("it.CustomerId = @p", param).FirstOrDefault()

                    c.TotalPurchases = c.TotalPurchases + newOrder.OrderTotal

                    newOrder.Customer = c
                    objCtx.SaveChanges()

                End If

            End Using
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RegionalCustomersModel;
using System.Data.Objects;

namespace ClientRegionalCustomers
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (RegionalCustomersEntities objCtx = 
                           new RegionalCustomersEntities())
                {
                    // Create a new customer.
                    Customer customerWest = new Customer();

                    customerWest.CustomerId =
                        objCtx.CustomersWest.Count<Customer>() + 1;

                    customerWest.Name = 
                        "Customer West " + 
                        customerWest.CustomerId.ToString();

                    customerWest.TotalPurchases = 
                        (decimal)875.00;

                    // Create Order.
                    OrderWest orderWest = new OrderWest();
                    orderWest.OrderId = 
                        objCtx.OrdersWest.Count<OrderWest>() + 1;

                    orderWest.OrderTotal = 
                        customerWest.TotalPurchases;
                    orderWest.Tax = 
                        orderWest.OrderTotal * (decimal).07;

                    orderWest.Customer = customerWest;

                    // Add customer and order to object context.
                    objCtx.AddToCustomersWest(customerWest);
                    objCtx.AddToOrdersWest(orderWest);

                    objCtx.SaveChanges();

                    // Add an order to existing customer.
                    OrderWest newOrder = new OrderWest();
                    newOrder.OrderId =
                        objCtx.OrdersWest.Count<OrderWest>() + 1;
                    newOrder.OrderTotal = (decimal)338.00;
                    newOrder.Tax = 
                               newOrder.OrderTotal * (decimal).07;

                    ObjectParameter param = 
                        new ObjectParameter("p", 3);
                    if (0 != objCtx.CustomersWest.Where(
                        "it.CustomerId = @p",
                         param).Count<Customer>())
                    {
                        Customer c =
                            objCtx.CustomersWest.Where(
                            "it.CustomerId = @p", 
                            param).First<Customer>();

                        c.TotalPurchases =
                            c.TotalPurchases + newOrder.OrderTotal;

                        newOrder.Customer = c;
                        
                        objCtx.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

참고 항목

작업

방법: 유형별 다중 엔터티 집합으로 모델 정의(Entity Framework)
방법: 유형별 다중 엔터티 집합을 사용하여 개체 쿼리 만들기 및 실행(Entity Framework)