zoukankan      html  css  js  c++  java
  • ADO.NET Entity Framework 如何:手动定义模型和映射文件(实体框架)

    本主题介绍如何手动创建 AdventureWorks 销售模型 模型和映射文件。 如果手动生成模型和映射文件,则仍需要将 Visual Studio 项目配置为使用实体框架。有关更多信息,请参见 如何:手动配置实体框架项目

    说明 说明:

    如果在 Visual Studio 项目中使用实体数据模型向导,则该向导会自动生成 .edmx 文件并将该项目配置为使用实体框架。有关更多信息,请参见 如何:使用实体数据模型向导(实体框架)

    创建存储架构定义语言 (SSDL) 文件

    • 将名为 AdventureWorks.ssdl 的文件添加到您的项目目录中并粘贴以下内容:

      <Schema Namespace="AdventureWorksModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://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="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
        <EntityContainer Name="AdventureWorksEntities">
          <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" />
          <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="Phone" Nullable="true" MaxLength="25" FixedLength="false" Unicode="true" />
          <Property Type="String" Name="EmailAddress" Nullable="true" MaxLength="50" FixedLength="false" Unicode="true" />
        </ComplexType>
      </Schema>
      
      

    创建映射规范语言 (MSL) 文件

    • 将名为 AdventureWorks.msl 的文件添加到您的项目目录中并粘贴以下内容:

      <Mapping Space="C-S" xmlns="http://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="IsTypeOf(AdventureWorksModel.Contact)">
              <MappingFragment StoreEntitySet="Contact">
                <ScalarProperty Name="ContactID" ColumnName="ContactID" />
                <ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" />
                <ScalarProperty Name="rowguid" ColumnName="rowguid" />
                <ScalarProperty Name="AdditionalContactInfo" ColumnName="AdditionalContactInfo" />
                <ScalarProperty Name="PasswordSalt" ColumnName="PasswordSalt" />
                <ScalarProperty Name="PasswordHash" ColumnName="PasswordHash" />
                <ScalarProperty Name="EmailPromotion" ColumnName="EmailPromotion" />
                <ScalarProperty Name="Suffix" ColumnName="Suffix" />
                <ScalarProperty Name="LastName" ColumnName="LastName" />
                <ScalarProperty Name="MiddleName" ColumnName="MiddleName" />
                <ScalarProperty Name="FirstName" ColumnName="FirstName" />
                <ScalarProperty Name="Title" ColumnName="Title" />
                <ScalarProperty Name="NameStyle" ColumnName="NameStyle" />
                <ComplexProperty Name="EmailPhoneComplexProperty">
                  <ScalarProperty Name="EmailAddress" ColumnName="EmailAddress" />
                  <ScalarProperty Name="Phone" ColumnName="Phone" /></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>
      
      
    请参见

    概念

    其他资源

  • 相关阅读:
    PAT 甲级 1051 Pop Sequence (25 分)(模拟栈,较简单)
    PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)
    PAT 甲级 1049 Counting Ones (30 分)(找规律,较难,想到了一点但没有深入考虑嫌麻烦)***...
    PAT 甲级 1048 Find Coins (25 分)(较简单,开个数组记录一下即可)
    PAT 甲级 1047 Student List for Course (25 分)(cout超时,string scanf printf注意点,字符串哈希反哈希)...
    PAT 甲级 1046 Shortest Distance (20 分)(前缀和,想了一会儿)
    R语言实现金融数据的时间序列分析及建模
    ES6 | class类的基本语法总结
    less使用总结
    umi 的项目中如何修改 favicon
  • 原文地址:https://www.cnblogs.com/bmate/p/1920991.html
Copyright © 2011-2022 走看看