방법: 수동으로 모델 및 매핑 파일 정의(Entity Framework)
이 항목에서는 수동으로 AdventureWorks Sales 모델 모델 및 매핑 파일을 만드는 방법을 보여 줍니다. 모델 및 매핑 파일을 수동으로 생성하는 경우에도 Entity Framework 를 사용하도록 Visual Studio 프로젝트를 구성해야 합니다. 자세한 내용은 방법: Entity Framework 프로젝트 수동 구성을 참조하십시오.
참고: |
---|
Visual Studio 프로젝트에서 엔터티 데이터 모델 마법사를 사용하면 이 마법사에서 자동으로 .edmx 파일을 생성하고 Entity Framework 를 사용하도록 프로젝트를 구성합니다.자세한 내용은 방법: 엔터티 데이터 모델 마법사 사용(Entity Framework)을 참조하십시오. |
SSDL(저장소 스키마 정의 언어) 파일을 만들려면
AdventureWorks.ssdl 파일을 프로젝트 디렉터리에 추가하고 다음 내용에 붙여 넣습니다.
<Schema Namespace="AdventureWorksModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="https://schemas.microsoft.com/ado/2009/02/edm/ssdl"> <EntityContainer Name="AdventureWorksModelStoreContainer"> <EntitySet Name="Address" EntityType="AdventureWorksModel.Store.Address" store:Type="Tables" Schema="Person" /> <EntitySet Name="Contact" EntityType="AdventureWorksModel.Store.Contact" store:Type="Tables" Schema="Person" /> <EntitySet Name="Product" EntityType="AdventureWorksModel.Store.Product" store:Type="Tables" Schema="Production" /> <EntitySet Name="SalesOrderDetail" EntityType="AdventureWorksModel.Store.SalesOrderDetail" store:Type="Tables" Schema="Sales" /> <EntitySet Name="SalesOrderHeader" EntityType="AdventureWorksModel.Store.SalesOrderHeader" store:Type="Tables" Schema="Sales" /> <AssociationSet Name="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID" Association="AdventureWorksModel.Store.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeader" /> <End Role="SalesOrderDetail" EntitySet="SalesOrderDetail" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderHeader_Address_BillToAddressID" Association="AdventureWorksModel.Store.FK_SalesOrderHeader_Address_BillToAddressID"> <End Role="Address" EntitySet="Address" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeader" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderHeader_Address_ShipToAddressID" Association="AdventureWorksModel.Store.FK_SalesOrderHeader_Address_ShipToAddressID"> <End Role="Address" EntitySet="Address" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeader" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderHeader_Contact_ContactID" Association="AdventureWorksModel.Store.FK_SalesOrderHeader_Contact_ContactID"> <End Role="Contact" EntitySet="Contact" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeader" /> </AssociationSet> </EntityContainer> <EntityType Name="Address"> <Key> <PropertyRef Name="AddressID" /> </Key> <Property Name="AddressID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> <Property Name="AddressLine1" Type="nvarchar" Nullable="false" MaxLength="60" /> <Property Name="AddressLine2" Type="nvarchar" MaxLength="60" /> <Property Name="City" Type="nvarchar" Nullable="false" MaxLength="30" /> <Property Name="StateProvinceID" Type="int" Nullable="false" /> <Property Name="PostalCode" Type="nvarchar" Nullable="false" MaxLength="15" /> <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" /> <Property Name="ModifiedDate" Type="datetime" Nullable="false" /> </EntityType> <EntityType Name="Contact"> <Key> <PropertyRef Name="ContactID" /> </Key> <Property Name="ContactID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> <Property Name="NameStyle" Type="bit" Nullable="false" /> <Property Name="Title" Type="nvarchar" MaxLength="8" /> <Property Name="FirstName" Type="nvarchar" Nullable="false" MaxLength="50" /> <Property Name="MiddleName" Type="nvarchar" MaxLength="50" /> <Property Name="LastName" Type="nvarchar" Nullable="false" MaxLength="50" /> <Property Name="Suffix" Type="nvarchar" MaxLength="10" /> <Property Name="EmailAddress" Type="nvarchar" MaxLength="50" /> <Property Name="EmailPromotion" Type="int" Nullable="false" /> <Property Name="Phone" Type="nvarchar" MaxLength="25" /> <Property Name="PasswordHash" Type="varchar" Nullable="false" MaxLength="128" /> <Property Name="PasswordSalt" Type="varchar" Nullable="false" MaxLength="10" /> <Property Name="AdditionalContactInfo" Type="xml" /> <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" /> <Property Name="ModifiedDate" Type="datetime" Nullable="false" /> </EntityType> <EntityType Name="Product"> <Key> <PropertyRef Name="ProductID" /> </Key> <Property Name="ProductID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="50" /> <Property Name="ProductNumber" Type="nvarchar" Nullable="false" MaxLength="25" /> <Property Name="MakeFlag" Type="bit" Nullable="false" /> <Property Name="FinishedGoodsFlag" Type="bit" Nullable="false" /> <Property Name="Color" Type="nvarchar" MaxLength="15" /> <Property Name="SafetyStockLevel" Type="smallint" Nullable="false" /> <Property Name="ReorderPoint" Type="smallint" Nullable="false" /> <Property Name="StandardCost" Type="money" Nullable="false" /> <Property Name="ListPrice" Type="money" Nullable="false" /> <Property Name="Size" Type="nvarchar" MaxLength="5" /> <Property Name="SizeUnitMeasureCode" Type="nchar" MaxLength="3" /> <Property Name="WeightUnitMeasureCode" Type="nchar" MaxLength="3" /> <Property Name="Weight" Type="decimal" Precision="8" Scale="2" /> <Property Name="DaysToManufacture" Type="int" Nullable="false" /> <Property Name="ProductLine" Type="nchar" MaxLength="2" /> <Property Name="Class" Type="nchar" MaxLength="2" /> <Property Name="Style" Type="nchar" MaxLength="2" /> <Property Name="ProductSubcategoryID" Type="int" /> <Property Name="ProductModelID" Type="int" /> <Property Name="SellStartDate" Type="datetime" Nullable="false" /> <Property Name="SellEndDate" Type="datetime" /> <Property Name="DiscontinuedDate" Type="datetime" /> <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" /> <Property Name="ModifiedDate" Type="datetime" Nullable="false" /> </EntityType> <EntityType Name="SalesOrderDetail"> <Key> <PropertyRef Name="SalesOrderID" /> <PropertyRef Name="SalesOrderDetailID" /> </Key> <Property Name="SalesOrderID" Type="int" Nullable="false" /> <Property Name="SalesOrderDetailID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> <Property Name="CarrierTrackingNumber" Type="nvarchar" MaxLength="25" /> <Property Name="OrderQty" Type="smallint" Nullable="false" /> <Property Name="ProductID" Type="int" Nullable="false" /> <Property Name="SpecialOfferID" Type="int" Nullable="false" /> <Property Name="UnitPrice" Type="money" Nullable="false" /> <Property Name="UnitPriceDiscount" Type="money" Nullable="false" /> <Property Name="LineTotal" Type="numeric" Nullable="false" Precision="38" Scale="6" StoreGeneratedPattern="Computed" /> <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" /> <Property Name="ModifiedDate" Type="datetime" Nullable="false" /> </EntityType> <EntityType Name="SalesOrderHeader"> <Key> <PropertyRef Name="SalesOrderID" /> </Key> <Property Name="SalesOrderID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> <Property Name="RevisionNumber" Type="tinyint" Nullable="false" /> <Property Name="OrderDate" Type="datetime" Nullable="false" /> <Property Name="DueDate" Type="datetime" Nullable="false" /> <Property Name="ShipDate" Type="datetime" /> <Property Name="Status" Type="tinyint" Nullable="false" /> <Property Name="OnlineOrderFlag" Type="bit" Nullable="false" /> <Property Name="SalesOrderNumber" Type="nvarchar" Nullable="false" MaxLength="25" StoreGeneratedPattern="Computed" /> <Property Name="PurchaseOrderNumber" Type="nvarchar" MaxLength="25" /> <Property Name="AccountNumber" Type="nvarchar" MaxLength="15" /> <Property Name="CustomerID" Type="int" Nullable="false" /> <Property Name="ContactID" Type="int" Nullable="false" /> <Property Name="SalesPersonID" Type="int" /> <Property Name="TerritoryID" Type="int" /> <Property Name="BillToAddressID" Type="int" Nullable="false" /> <Property Name="ShipToAddressID" Type="int" Nullable="false" /> <Property Name="ShipMethodID" Type="int" Nullable="false" /> <Property Name="CreditCardID" Type="int" /> <Property Name="CreditCardApprovalCode" Type="varchar" MaxLength="15" /> <Property Name="CurrencyRateID" Type="int" /> <Property Name="SubTotal" Type="money" Nullable="false" /> <Property Name="TaxAmt" Type="money" Nullable="false" /> <Property Name="Freight" Type="money" Nullable="false" /> <Property Name="TotalDue" Type="money" Nullable="false" StoreGeneratedPattern="Computed" /> <Property Name="Comment" Type="nvarchar" MaxLength="128" /> <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" /> <Property Name="ModifiedDate" Type="datetime" Nullable="false" /> </EntityType> <Association Name="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"> <End Role="SalesOrderHeader" Type="AdventureWorksModel.Store.SalesOrderHeader" Multiplicity="1"> <OnDelete Action="Cascade" /> </End> <End Role="SalesOrderDetail" Type="AdventureWorksModel.Store.SalesOrderDetail" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="SalesOrderHeader"> <PropertyRef Name="SalesOrderID" /> </Principal> <Dependent Role="SalesOrderDetail"> <PropertyRef Name="SalesOrderID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderHeader_Address_BillToAddressID"> <End Role="Address" Type="AdventureWorksModel.Store.Address" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.Store.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Address"> <PropertyRef Name="AddressID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="BillToAddressID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderHeader_Address_ShipToAddressID"> <End Role="Address" Type="AdventureWorksModel.Store.Address" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.Store.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Address"> <PropertyRef Name="AddressID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="ShipToAddressID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderHeader_Contact_ContactID"> <End Role="Contact" Type="AdventureWorksModel.Store.Contact" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.Store.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Contact"> <PropertyRef Name="ContactID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="ContactID" /> </Dependent> </ReferentialConstraint> </Association> </Schema>
CSDL(개념 스키마 정의 언어) 파일을 만들려면
AdventureWorks.csdl 파일을 프로젝트 디렉터리에 추가하고 다음 내용에 붙여 넣습니다.
<Schema Namespace="AdventureWorksModel" Alias="Self" xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="https://schemas.microsoft.com/ado/2008/09/edm"> <EntityContainer Name="AdventureWorksEntities" annotation:LazyLoadingEnabled="true"> <EntitySet Name="Addresses" EntityType="AdventureWorksModel.Address" /> <EntitySet Name="Contacts" EntityType="AdventureWorksModel.Contact" /> <EntitySet Name="Products" EntityType="AdventureWorksModel.Product" /> <EntitySet Name="SalesOrderDetails" EntityType="AdventureWorksModel.SalesOrderDetail" /> <EntitySet Name="SalesOrderHeaders" EntityType="AdventureWorksModel.SalesOrderHeader" /> <AssociationSet Name="FK_SalesOrderHeader_Address_BillToAddressID" Association="AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID"> <End Role="Address" EntitySet="Addresses" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeaders" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderHeader_Address_ShipToAddressID" Association="AdventureWorksModel.FK_SalesOrderHeader_Address_ShipToAddressID"> <End Role="Address" EntitySet="Addresses" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeaders" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderHeader_Contact_ContactID" Association="AdventureWorksModel.FK_SalesOrderHeader_Contact_ContactID"> <End Role="Contact" EntitySet="Contacts" /> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeaders" /> </AssociationSet> <AssociationSet Name="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID" Association="AdventureWorksModel.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"> <End Role="SalesOrderHeader" EntitySet="SalesOrderHeaders" /> <End Role="SalesOrderDetail" EntitySet="SalesOrderDetails" /> </AssociationSet> </EntityContainer> <EntityType Name="Address"> <Key> <PropertyRef Name="AddressID" /> </Key> <Property Name="AddressID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> <Property Name="AddressLine1" Type="String" Nullable="false" MaxLength="60" Unicode="true" FixedLength="false" /> <Property Name="AddressLine2" Type="String" MaxLength="60" Unicode="true" FixedLength="false" /> <Property Name="City" Type="String" Nullable="false" MaxLength="30" Unicode="true" FixedLength="false" /> <Property Name="StateProvinceID" Type="Int32" Nullable="false" /> <Property Name="PostalCode" Type="String" Nullable="false" MaxLength="15" Unicode="true" FixedLength="false" /> <Property Name="rowguid" Type="Guid" Nullable="false" /> <Property Name="ModifiedDate" Type="DateTime" Nullable="false" /> <NavigationProperty Name="SalesOrderHeaders" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID" FromRole="Address" ToRole="SalesOrderHeader" /> <NavigationProperty Name="SalesOrderHeaders1" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Address_ShipToAddressID" FromRole="Address" ToRole="SalesOrderHeader" /> </EntityType> <EntityType Name="Contact"> <Key> <PropertyRef Name="ContactID" /> </Key> <Property Name="ContactID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> <Property Name="NameStyle" Type="Boolean" Nullable="false" /> <Property Name="Title" Type="String" MaxLength="8" Unicode="true" FixedLength="false" /> <Property Name="FirstName" Type="String" Nullable="false" MaxLength="50" Unicode="true" FixedLength="false" /> <Property Name="MiddleName" Type="String" MaxLength="50" Unicode="true" FixedLength="false" /> <Property Name="LastName" Type="String" Nullable="false" MaxLength="50" Unicode="true" FixedLength="false" /> <Property Name="Suffix" Type="String" MaxLength="10" Unicode="true" FixedLength="false" /> <Property Name="EmailPromotion" Type="Int32" Nullable="false" /> <Property Name="PasswordHash" Type="String" Nullable="false" MaxLength="128" Unicode="false" FixedLength="false" /> <Property Name="PasswordSalt" Type="String" Nullable="false" MaxLength="10" Unicode="false" FixedLength="false" /> <Property Name="AdditionalContactInfo" Type="String" MaxLength="Max" Unicode="true" FixedLength="false" /> <Property Name="rowguid" Type="Guid" Nullable="false" /> <Property Name="ModifiedDate" Type="DateTime" Nullable="false" /> <NavigationProperty Name="SalesOrderHeaders" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Contact_ContactID" FromRole="Contact" ToRole="SalesOrderHeader" /> <Property Name="EmailPhoneComplexProperty" Type="AdventureWorksModel.EmailPhone" Nullable="false" /> </EntityType> <EntityType Name="Product"> <Key> <PropertyRef Name="ProductID" /> </Key> <Property Name="ProductID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> <Property Name="Name" Type="String" Nullable="false" MaxLength="50" Unicode="true" FixedLength="false" /> <Property Name="ProductNumber" Type="String" Nullable="false" MaxLength="25" Unicode="true" FixedLength="false" /> <Property Name="MakeFlag" Type="Boolean" Nullable="false" /> <Property Name="FinishedGoodsFlag" Type="Boolean" Nullable="false" /> <Property Name="Color" Type="String" MaxLength="15" Unicode="true" FixedLength="false" /> <Property Name="SafetyStockLevel" Type="Int16" Nullable="false" /> <Property Name="ReorderPoint" Type="Int16" Nullable="false" /> <Property Name="StandardCost" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="ListPrice" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="Size" Type="String" MaxLength="5" Unicode="true" FixedLength="false" /> <Property Name="SizeUnitMeasureCode" Type="String" MaxLength="3" Unicode="true" FixedLength="true" /> <Property Name="WeightUnitMeasureCode" Type="String" MaxLength="3" Unicode="true" FixedLength="true" /> <Property Name="Weight" Type="Decimal" Precision="8" Scale="2" /> <Property Name="DaysToManufacture" Type="Int32" Nullable="false" /> <Property Name="ProductLine" Type="String" MaxLength="2" Unicode="true" FixedLength="true" /> <Property Name="Class" Type="String" MaxLength="2" Unicode="true" FixedLength="true" /> <Property Name="Style" Type="String" MaxLength="2" Unicode="true" FixedLength="true" /> <Property Name="ProductSubcategoryID" Type="Int32" /> <Property Name="ProductModelID" Type="Int32" /> <Property Name="SellStartDate" Type="DateTime" Nullable="false" /> <Property Name="SellEndDate" Type="DateTime" /> <Property Name="DiscontinuedDate" Type="DateTime" /> <Property Name="rowguid" Type="Guid" Nullable="false" /> <Property Name="ModifiedDate" Type="DateTime" Nullable="false" /> </EntityType> <EntityType Name="SalesOrderDetail"> <Key> <PropertyRef Name="SalesOrderID" /> <PropertyRef Name="SalesOrderDetailID" /> </Key> <Property Name="SalesOrderID" Type="Int32" Nullable="false" /> <Property Name="SalesOrderDetailID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> <Property Name="CarrierTrackingNumber" Type="String" MaxLength="25" Unicode="true" FixedLength="false" DefaultValue="1A-2B-3C" a:SetterAccess="Protected" xmlns:a="https://schemas.microsoft.com/ado/2006/04/codegeneration" /> <Property Name="OrderQty" Type="Int16" Nullable="false" /> <Property Name="ProductID" Type="Int32" Nullable="false" /> <Property Name="SpecialOfferID" Type="Int32" Nullable="false" /> <Property Name="UnitPrice" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="UnitPriceDiscount" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="LineTotal" Type="Decimal" Nullable="false" Precision="38" Scale="6" annotation:StoreGeneratedPattern="Computed" /> <Property Name="rowguid" Type="Guid" Nullable="false" /> <Property Name="ModifiedDate" Type="DateTime" Nullable="false" /> <NavigationProperty Name="SalesOrderHeader" Relationship="AdventureWorksModel.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID" FromRole="SalesOrderDetail" ToRole="SalesOrderHeader" /> </EntityType> <EntityType Name="SalesOrderHeader"> <Key> <PropertyRef Name="SalesOrderID" /> </Key> <Property Name="SalesOrderID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> <Property Name="RevisionNumber" Type="Byte" Nullable="false" /> <Property Name="OrderDate" Type="DateTime" Nullable="false" /> <Property Name="DueDate" Type="DateTime" Nullable="false" /> <Property Name="ShipDate" Type="DateTime" /> <Property Name="Status" Type="Byte" Nullable="false" ConcurrencyMode="Fixed" /> <Property Name="OnlineOrderFlag" Type="Boolean" Nullable="false" /> <Property Name="SalesOrderNumber" Type="String" Nullable="false" MaxLength="25" Unicode="true" FixedLength="false" annotation:StoreGeneratedPattern="Computed" /> <Property Name="PurchaseOrderNumber" Type="String" MaxLength="25" Unicode="true" FixedLength="false" /> <Property Name="AccountNumber" Type="String" MaxLength="15" Unicode="true" FixedLength="false" /> <Property Name="CustomerID" Type="Int32" Nullable="false" /> <Property Name="ContactID" Type="Int32" Nullable="false" /> <Property Name="SalesPersonID" Type="Int32" /> <Property Name="TerritoryID" Type="Int32" /> <Property Name="BillToAddressID" Type="Int32" Nullable="false" /> <Property Name="ShipToAddressID" Type="Int32" Nullable="false" /> <Property Name="ShipMethodID" Type="Int32" Nullable="false" /> <Property Name="CreditCardID" Type="Int32" /> <Property Name="CreditCardApprovalCode" Type="String" MaxLength="15" Unicode="false" FixedLength="false" /> <Property Name="CurrencyRateID" Type="Int32" /> <Property Name="SubTotal" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="TaxAmt" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="Freight" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="TotalDue" Type="Decimal" Nullable="false" Precision="19" Scale="4" annotation:StoreGeneratedPattern="Computed" /> <Property Name="Comment" Type="String" MaxLength="128" Unicode="true" FixedLength="false" /> <Property Name="rowguid" Type="Guid" Nullable="false" /> <Property Name="ModifiedDate" Type="DateTime" Nullable="false" /> <NavigationProperty Name="Address" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID" FromRole="SalesOrderHeader" ToRole="Address" /> <NavigationProperty Name="Address1" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Address_ShipToAddressID" FromRole="SalesOrderHeader" ToRole="Address" /> <NavigationProperty Name="Contact" Relationship="AdventureWorksModel.FK_SalesOrderHeader_Contact_ContactID" FromRole="SalesOrderHeader" ToRole="Contact" /> <NavigationProperty Name="SalesOrderDetails" Relationship="AdventureWorksModel.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID" FromRole="SalesOrderHeader" ToRole="SalesOrderDetail" /> </EntityType> <Association Name="FK_SalesOrderHeader_Address_BillToAddressID"> <End Role="Address" Type="AdventureWorksModel.Address" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Address"> <PropertyRef Name="AddressID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="BillToAddressID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderHeader_Address_ShipToAddressID"> <End Role="Address" Type="AdventureWorksModel.Address" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Address"> <PropertyRef Name="AddressID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="ShipToAddressID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderHeader_Contact_ContactID"> <End Role="Contact" Type="AdventureWorksModel.Contact" Multiplicity="1" /> <End Role="SalesOrderHeader" Type="AdventureWorksModel.SalesOrderHeader" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="Contact"> <PropertyRef Name="ContactID" /> </Principal> <Dependent Role="SalesOrderHeader"> <PropertyRef Name="ContactID" /> </Dependent> </ReferentialConstraint> </Association> <Association Name="FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID"> <End Role="SalesOrderHeader" Type="AdventureWorksModel.SalesOrderHeader" Multiplicity="1"> <OnDelete Action="Cascade" /> </End> <End Role="SalesOrderDetail" Type="AdventureWorksModel.SalesOrderDetail" Multiplicity="*" /> <ReferentialConstraint> <Principal Role="SalesOrderHeader"> <PropertyRef Name="SalesOrderID" /> </Principal> <Dependent Role="SalesOrderDetail"> <PropertyRef Name="SalesOrderID" /> </Dependent> </ReferentialConstraint> </Association> <ComplexType Name="EmailPhone"> <Property Type="String" Name="EmailAddress" MaxLength="50" FixedLength="false" Unicode="true" /> <Property Type="String" Name="Phone" MaxLength="25" FixedLength="false" Unicode="true" /></ComplexType> </Schema>
MSL(매핑 사양 언어) 파일을 만들려면
AdventureWorks.msl 파일을 프로젝트 디렉터리에 추가하고 다음 내용에 붙여 넣습니다.
<Mapping Space="C-S" xmlns="https://schemas.microsoft.com/ado/2008/09/mapping/cs"> <EntityContainerMapping StorageEntityContainer="AdventureWorksModelStoreContainer" CdmEntityContainer="AdventureWorksEntities"> <EntitySetMapping Name="Addresses"><EntityTypeMapping TypeName="AdventureWorksModel.Address"><MappingFragment StoreEntitySet="Address"> <ScalarProperty Name="AddressID" ColumnName="AddressID" /> <ScalarProperty Name="AddressLine1" ColumnName="AddressLine1" /> <ScalarProperty Name="AddressLine2" ColumnName="AddressLine2" /> <ScalarProperty Name="City" ColumnName="City" /> <ScalarProperty Name="StateProvinceID" ColumnName="StateProvinceID" /> <ScalarProperty Name="PostalCode" ColumnName="PostalCode" /> <ScalarProperty Name="rowguid" ColumnName="rowguid" /> <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" /> </MappingFragment></EntityTypeMapping></EntitySetMapping> <EntitySetMapping Name="Contacts"><EntityTypeMapping TypeName="AdventureWorksModel.Contact"><MappingFragment StoreEntitySet="Contact"> <ScalarProperty Name="ContactID" ColumnName="ContactID" /> <ScalarProperty Name="NameStyle" ColumnName="NameStyle" /> <ScalarProperty Name="Title" ColumnName="Title" /> <ScalarProperty Name="FirstName" ColumnName="FirstName" /> <ScalarProperty Name="MiddleName" ColumnName="MiddleName" /> <ScalarProperty Name="LastName" ColumnName="LastName" /> <ScalarProperty Name="Suffix" ColumnName="Suffix" /> <ScalarProperty Name="EmailPromotion" ColumnName="EmailPromotion" /> <ScalarProperty Name="PasswordHash" ColumnName="PasswordHash" /> <ScalarProperty Name="PasswordSalt" ColumnName="PasswordSalt" /> <ScalarProperty Name="AdditionalContactInfo" ColumnName="AdditionalContactInfo" /> <ScalarProperty Name="rowguid" ColumnName="rowguid" /> <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" /> <ComplexProperty Name="EmailPhoneComplexProperty"> <ScalarProperty Name="Phone" ColumnName="Phone" /> <ScalarProperty Name="EmailAddress" ColumnName="EmailAddress" /></ComplexProperty> </MappingFragment></EntityTypeMapping></EntitySetMapping> <EntitySetMapping Name="Products"><EntityTypeMapping TypeName="AdventureWorksModel.Product"><MappingFragment StoreEntitySet="Product"> <ScalarProperty Name="ProductID" ColumnName="ProductID" /> <ScalarProperty Name="Name" ColumnName="Name" /> <ScalarProperty Name="ProductNumber" ColumnName="ProductNumber" /> <ScalarProperty Name="MakeFlag" ColumnName="MakeFlag" /> <ScalarProperty Name="FinishedGoodsFlag" ColumnName="FinishedGoodsFlag" /> <ScalarProperty Name="Color" ColumnName="Color" /> <ScalarProperty Name="SafetyStockLevel" ColumnName="SafetyStockLevel" /> <ScalarProperty Name="ReorderPoint" ColumnName="ReorderPoint" /> <ScalarProperty Name="StandardCost" ColumnName="StandardCost" /> <ScalarProperty Name="ListPrice" ColumnName="ListPrice" /> <ScalarProperty Name="Size" ColumnName="Size" /> <ScalarProperty Name="SizeUnitMeasureCode" ColumnName="SizeUnitMeasureCode" /> <ScalarProperty Name="WeightUnitMeasureCode" ColumnName="WeightUnitMeasureCode" /> <ScalarProperty Name="Weight" ColumnName="Weight" /> <ScalarProperty Name="DaysToManufacture" ColumnName="DaysToManufacture" /> <ScalarProperty Name="ProductLine" ColumnName="ProductLine" /> <ScalarProperty Name="Class" ColumnName="Class" /> <ScalarProperty Name="Style" ColumnName="Style" /> <ScalarProperty Name="ProductSubcategoryID" ColumnName="ProductSubcategoryID" /> <ScalarProperty Name="ProductModelID" ColumnName="ProductModelID" /> <ScalarProperty Name="SellStartDate" ColumnName="SellStartDate" /> <ScalarProperty Name="SellEndDate" ColumnName="SellEndDate" /> <ScalarProperty Name="DiscontinuedDate" ColumnName="DiscontinuedDate" /> <ScalarProperty Name="rowguid" ColumnName="rowguid" /> <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" /> </MappingFragment></EntityTypeMapping></EntitySetMapping> <EntitySetMapping Name="SalesOrderDetails"><EntityTypeMapping TypeName="AdventureWorksModel.SalesOrderDetail"><MappingFragment StoreEntitySet="SalesOrderDetail"> <ScalarProperty Name="SalesOrderID" ColumnName="SalesOrderID" /> <ScalarProperty Name="SalesOrderDetailID" ColumnName="SalesOrderDetailID" /> <ScalarProperty Name="CarrierTrackingNumber" ColumnName="CarrierTrackingNumber" /> <ScalarProperty Name="OrderQty" ColumnName="OrderQty" /> <ScalarProperty Name="ProductID" ColumnName="ProductID" /> <ScalarProperty Name="SpecialOfferID" ColumnName="SpecialOfferID" /> <ScalarProperty Name="UnitPrice" ColumnName="UnitPrice" /> <ScalarProperty Name="UnitPriceDiscount" ColumnName="UnitPriceDiscount" /> <ScalarProperty Name="LineTotal" ColumnName="LineTotal" /> <ScalarProperty Name="rowguid" ColumnName="rowguid" /> <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" /> </MappingFragment></EntityTypeMapping></EntitySetMapping> <EntitySetMapping Name="SalesOrderHeaders"><EntityTypeMapping TypeName="AdventureWorksModel.SalesOrderHeader"><MappingFragment StoreEntitySet="SalesOrderHeader"> <ScalarProperty Name="SalesOrderID" ColumnName="SalesOrderID" /> <ScalarProperty Name="RevisionNumber" ColumnName="RevisionNumber" /> <ScalarProperty Name="OrderDate" ColumnName="OrderDate" /> <ScalarProperty Name="DueDate" ColumnName="DueDate" /> <ScalarProperty Name="ShipDate" ColumnName="ShipDate" /> <ScalarProperty Name="Status" ColumnName="Status" /> <ScalarProperty Name="OnlineOrderFlag" ColumnName="OnlineOrderFlag" /> <ScalarProperty Name="SalesOrderNumber" ColumnName="SalesOrderNumber" /> <ScalarProperty Name="PurchaseOrderNumber" ColumnName="PurchaseOrderNumber" /> <ScalarProperty Name="AccountNumber" ColumnName="AccountNumber" /> <ScalarProperty Name="CustomerID" ColumnName="CustomerID" /> <ScalarProperty Name="ContactID" ColumnName="ContactID" /> <ScalarProperty Name="SalesPersonID" ColumnName="SalesPersonID" /> <ScalarProperty Name="TerritoryID" ColumnName="TerritoryID" /> <ScalarProperty Name="BillToAddressID" ColumnName="BillToAddressID" /> <ScalarProperty Name="ShipToAddressID" ColumnName="ShipToAddressID" /> <ScalarProperty Name="ShipMethodID" ColumnName="ShipMethodID" /> <ScalarProperty Name="CreditCardID" ColumnName="CreditCardID" /> <ScalarProperty Name="CreditCardApprovalCode" ColumnName="CreditCardApprovalCode" /> <ScalarProperty Name="CurrencyRateID" ColumnName="CurrencyRateID" /> <ScalarProperty Name="SubTotal" ColumnName="SubTotal" /> <ScalarProperty Name="TaxAmt" ColumnName="TaxAmt" /> <ScalarProperty Name="Freight" ColumnName="Freight" /> <ScalarProperty Name="TotalDue" ColumnName="TotalDue" /> <ScalarProperty Name="Comment" ColumnName="Comment" /> <ScalarProperty Name="rowguid" ColumnName="rowguid" /> <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" /> </MappingFragment></EntityTypeMapping></EntitySetMapping> </EntityContainerMapping> </Mapping>