다음을 통해 공유


방법: 형식당 하나의 테이블 상속을 사용하여 개체 추가 및 수정(Entity Framework)

이 항목에서는 방법: 형식당 하나의 테이블 상속을 사용하여 모델 정의(Entity Framework) 항목에서 정의된 EDM(엔터티 데이터 모델)을 사용하며, 형식당 하나의 테이블 상속 계층 구조에서 파생 형식의 인스턴스를 추가하는 방법을 보여 줍니다.

형식당 하나의 테이블 상속을 사용하여 프로젝트를 만들려면

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

  2. 방법: 형식당 하나의 테이블 상속을 사용하여 모델 정의(Entity Framework)에서 설명한 상속 계층 구조에서 빌드한 dll에 대한 참조를 추가합니다.

  3. 방법: 형식당 하나의 테이블 상속을 사용하여 모델 정의(Entity Framework) 항목의 스키마를 SchoolDataClient 실행 파일과 같은 폴더에 추가합니다.

  4. 다음과 같은 내용의 응용 프로그램 구성 파일을 프로젝트에 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings><add name="SchoolDataLibContainer" 
   connectionString=
   "metadata=res://*/SchoolDataLib.csdl|
   res://*/SchoolDataLib.ssdl|
   res://*/SchoolDataLib.msl;provider=System.Data.SqlClient;
   provider connection string=&quot;
   Data Source=localhost;
   Initial Catalog=SchoolData;Integrated Security=True;
   MultipleActiveResultSets=True&quot;" 
   providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

파생 형식의 인스턴스를 추가하려면

  1. 이름이 newDeptDeptEngineering 형식의 인스턴스를 만듭니다.

  2. newDept의 속성 데이터를 초기화합니다.

  3. Person 형식의 새 인스턴스를 만듭니다.

  4. PersonCategory 속성을 Administrator 범주를 나타내는 3으로 할당합니다.

  5. newAdmin의 속성을 초기화합니다.

  6. PersonnewDept의 관리자 속성에 할당합니다.

  7. newDeptnewAdmin을 저장소에 추가하고 변경 내용을 저장합니다.

예제

Option Explicit On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Xml
Imports System.Xml.Linq
Imports System.Text
Imports SchoolDataLib

Module Module1

    Sub Main()
        Try
            Using objectContext As SchoolDataLibContainer = 
                                       New SchoolDataLibContainer ()
                ' Display departments and administrators.
                For Each dept As Department In objectContext.Departments
                    Console.WriteLine("School: {0} Budget: {1}", _
                            dept.Name, dept.Budget)

                    ' Load associated contact reference if any.
                    dept.AdministratorReference.Load()
                    If dept.Administrator IsNot Nothing Then
                        Console.WriteLine("Administrator: {0} {1}", _
                            dept.Administrator.FirstName, _
                            dept.Administrator.LastName)
                    End If
                Next

                For Each eDept As DeptEngineering In _
                        objectContext.Departments.OfType(Of DeptEngineering)()
                    Console.WriteLine("{0} LabBudget: {1} FiberOp Budget: {2}", _
                        eDept.Name, eDept.LabBudget.ToString(), _
                        eDept.FiberOpticsBudget.ToString())
                Next

                Dim countDept As Integer = 0
                Dim newDept As DeptEngineering = New DeptEngineering()

                For Each dept As Department In objectContext.Departments
                    countDept = countDept + 1
                Next

                newDept.DepartmentID = countDept + 1
                newDept.Name = "Engineering School " + (countDept + 1).ToString()
                newDept.StartDate = DateTime.Now
                newDept.FiberOpticsBudget = 250000.0
                newDept.LabBudget = 400000.0
                newDept.Budget = newDept.FiberOpticsBudget + newDept.LabBudget

                ' Create new contact item to be 
                ' added as school administrator.
                Dim countPerson As Integer = 0
                For Each pers As Person In objectContext.People
                    countPerson = countPerson + 1
                Next

                Dim newAdmin As Administrator = New Administrator()
                newAdmin.PersonID = countPerson + 1
                newAdmin.FirstName = "Tony"
                newAdmin.LastName = "Allen"
                newAdmin.AdminDate = DateTime.Now - New TimeSpan(2000, 0, 0, 0)

                ' Assign the contact to Administrator property.
                newDept.Administrator = newAdmin

                ' Add admin and school to object context.
                objectContext.AddToPeople("People", newAdmin)
                objectContext.AddToDepartments("Departments", newDept)

                objectContext.SaveChanges()
            End Using

        Catch ex As System.Data.MappingException
            Console.WriteLine(ex.ToString())
        Catch ex As System.Data.CommandExecutionException
            Console.WriteLine(ex.ToString())
        Catch ex As System.Data.UpdateException
            Console.WriteLine(ex.ToString())
        End Try

    End Sub
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SchoolDataLib;

namespace SchoolDataClient
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (SchoolDataLibContainer objectContext =
                                      new SchoolDataLibContainer())
                {
                    DeptEngineering newDept =
                                         new DeptEngineering();

                    int countDept = 
                        objectContext.Departments.Count<Department>();
                    newDept.DepartmentID = countDept + 1;
                    newDept.Name = "Engineering School " +
                                          (countDept + 1).ToString();
                    newDept.StartDate = DateTime.Now;
                    newDept.FiberOpticsBudget = 250000.00M;
                    newDept.LabBudget = 400000.00M;
                    newDept.Budget = newDept.FiberOpticsBudget + 
                        newDept.LabBudget;

                    // Create new contact item to be 
                    // added as school administrator.
                    int countPerson = objectContext.People.Count<Person>();
                    Administrator newAdmin = new Administrator();
                    newAdmin.PersonID = countPerson + 1;
                    newAdmin.FirstName = "Jesper";
                    newAdmin.LastName = "Aaberg";
                    newAdmin.AdminDate = DateTime.Now - 
                                     new TimeSpan(2000, 0, 0, 0);

                    // Assign the contact to Administrator property.
                    newDept.Administrator = newAdmin;

                    // Add admin and school to object context.
                    objectContext.AddToPeople(newAdmin);
                    objectContext.AddToDepartments(newDept);

                    objectContext.SaveChanges();
                }
            }

            catch (System.Data.MappingException e)
            {
                Console.WriteLine(e.ToString());
            }
            
            catch (System.Data.UpdateException e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

참고 항목

작업

방법: 형식당 하나의 테이블 상속을 사용하여 모델 정의(Entity Framework)
방법: 형식당 하나의 테이블 상속을 사용하여 개체 쿼리 만들기 및 실행(Entity Framework)