カスタム オブジェクトを操作できるようにモデリング ファイルとマッピング ファイルをカスタマイズする方法 (Entity Framework)
Entity Framework でカスタム データ クラスを使用するには、概念モデルで定義されたエンティティ型とプロパティをカスタム データ クラスと一致させる必要があります。 Entity Data Model ツールを使用してデータベースからモデルとマッピングの内容を生成すると、概念モデルのエンティティ型とエンティティ セットはデータベース内のテーブルと一致します。 モデルとマッピングの内容を更新してカスタム データ クラスと一致させるには、次の手順を実行する必要があります。
カスタム データ クラスと一致するように、概念スキーマ定義言語 (CSDL) で定義された概念モデルの内容を更新します。
ストア スキーマ定義言語 (SSDL) で定義されたストレージ モデルの内容を必要に応じて更新します。
マッピング仕様言語 (MSL) で定義されたマッピングの内容を更新します。
更新されたモデルとマッピングの内容を検証します。
Visual Studio によってオブジェクト レイヤーが生成されないようにします。
注 : |
---|
Entity Data Model ツールでは、ストレージ スキーマ定義 (SSDL) の内容に基づき新しいデータベースを作成するスクリプトを生成することもできます。その場合、カスタム データ クラスと一致するデータ モデルを作成してから、.edmx ファイルに基づき新しいデータベースを作成します。詳細については、「How to: Create a Database from a Conceptual Model」を参照してください。 |
このトピックでは、ADO.NET Entity Data Model Designer (エンティティ デザイナー) または EDM ジェネレーター (EdmGen.exe) ユーティリティを使用してモデルを更新する方法を説明します。 このトピックの例を実行するには、モデルが既に生成されている必要があります。 この例のモデルは、AdventureWorks データベースの Contact、SalesOrderHeader、および SalesOrderDetail の各テーブルに基づいています。 新しいモデルを作成する方法については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」または「方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する」を参照してください。 また、Contact、SalesOrderHeader、および SalesOrderDetail テーブルにマップする Contact、Orders、および LineItem カスタム データ クラスもプロジェクトに追加する必要があります。 Contact、Orders、および LineItem の各カスタム データ クラスを定義するには、「方法: POCO エンティティを定義する (Entity Framework)」を参照してください。
次の手順は、エンティティ デザイナーで .edmx ファイルが開いていることを前提としています。
Entity Data Model デザイナーを使用したモデルの変更
カスタム データ クラスの名前を反映するように、EntityType 要素と EntitySet 要素の名前を変更します。
[Contact] エンティティをクリックします。 [プロパティ] ウィンドウで、[エンティティ セット名] を ContactSet に設定します。
[SalesOrderHeader] エンティティをクリックします。 [プロパティ] ウィンドウで、[名前] を Order に、[エンティティ セット名] を OrderSet に設定します。
[SalesOrderDetails] をクリックします。 [プロパティ] ウィンドウで、[名前] を LineItem に、[Entity Set Name] を LineItemSet に設定します。
ナビゲーション プロパティの名前を変更します。
[Contact] エンティティの [SalesOrderHeaders] ナビゲーション プロパティをクリックします。 [プロパティ] ウィンドウで、[名前] を Orders に設定します。
[SalesOrderHeader] エンティティの [SalesOrderDetails] ナビゲーション プロパティをクリックします。 [プロパティ] ウィンドウで、[名前] を LineItems に設定します。
[SalesOrderDetail] エンティティの [SalesOrderHeader] ナビゲーション プロパティをクリックします。 [プロパティ] ウィンドウで、[名前] を Order に設定します。
アソシエーションを変更します。
Client エンティティ型と Order エンティティ型の間のアソシエーションを選択し、[プロパティ] ウィンドウの値と一致するように次のプロパティを変更します。
[アソシエーション セット名]: Order_ Contact_ ContactIDSet
[End1 のナビゲーション プロパティ]: Orders
[End1 のロール名]: Contact
[End2 のナビゲーション プロパティ]: Contact
[End2 のロール名]: Order
[名前]: Order_Contact_ContactID
Order エンティティ型と LineItem エンティティ型の間のアソシエーションを選択し、[プロパティ] ウィンドウの値と一致するように次のプロパティを変更します。
[アソシエーション セット名]: LineItem_Order_SalesOrderIDSet
[End1 のナビゲーション プロパティ]: LineItems
[End1 のロール名]: Order
[End2 のナビゲーション プロパティ]: Order
[End2 のロール名]: LineItem
[名前]: LineItem_Order_SalesOrderID
Order エンティティ型のプロパティから複合型を作成します。
[Order] エンティティの [AccountNumber]、[Comment]、[PurchaseOrderNumber]、および [SalesOrderNumber] の各プロパティを選択して右クリックし、[複合型の作成] をクリックします。
選択したプロパティの新しい複合型がモデル ブラウザーに追加されます。 新しい複合型プロパティが SalesOrderHeader エンティティに追加されます。 複合型および複合型プロパティには既定の名前が付けられます。
複合型の名前を OrderInfo に変更します。
複合型プロパティの名前を ExtendedInfo に変更します。
変更内容を .edmx ファイルに保存します。
.edmx ファイルのコード生成を無効にします。 ADO.NET Entity Data Model Designer (エンティティ デザイナー) で .edmx ファイルを開きます。 デザイナー画面を右クリックして [プロパティ] をクリックします。 [プロパティ] ウィンドウで、[コード生成方法] プロパティをクリックし、None をクリックします。 [プロパティ] ウィンドウが表示されない場合は、F4 キーを押してください。
EdmGen.exe を使用したモデルの変更
Visual Studio またはテキスト エディターで CSDL ファイルを開きます。
カスタム データ クラスの名前を反映するように、EntityType 要素と EntitySet 要素の名前を変更します。
カスタム データ クラスのプロパティの名前に対応するように、それぞれの型の Property 要素の名前を変更します。
カスタム データ クラスに存在しないすべてのプロパティの Property 要素を削除します。
カスタム データ クラスのナビゲーション プロパティの名前と一致するように、NavigationProperty 要素の名前を変更します。 FromRole と ToRole が正しいエンティティ型を示していることを確認します。
変更内容を .csdl ファイルに保存します。
Visual Studio またはテキスト エディターで MSL ファイルを開きます。
カスタム クラスの名前を反映するように、EntitySetMapping 要素と TypeName 属性の名前を変更します。
対応するカスタム データ クラスがないすべてのエンティティの EntitySetMapping 要素を削除します。
カスタム データ クラスのプロパティの名前に対応するように、それぞれの型の ScalarProperty 要素の名前を変更します。
カスタム データ クラスに存在しないすべてのプロパティの ScalarProperty 要素を削除します。
変更内容を .msl ファイルに保存します。
Visual Studio またはテキスト エディターで SSDL ファイルを開きます。
カスタム データ クラスにマップされていないすべてのエンティティの EntityType 要素を削除します。
カスタム データ クラスのプロパティにマップされていないすべてのプロパティの ScalarProperty 要素を削除します。
変更内容を .ssdl ファイルに保存します。
マッピング ファイルのあるディレクトリで EdmGen.exe ユーティリティを実行して、更新されたマッピング ファイルを検証します。
次のコマンドを使用します。
%windir%\Microsoft.NET\Framework\v4\edmgen.exe /mode:ValidateArtifacts /inssdl:. \YourModel.ssdl /inmsl:. \YourModel.msl /incsdl:. \YourModel.csdl
注 : 改行を削除し、YourModel を対象のマッピング ファイルの名前で置き換えてください。 - 出力を確認し、検証エラーがあればエラーを修正します。
自動生成されたオブジェクト コードを再生成、保存、および削除します。
Visual Studio のソリューション エクスプローラーで、.csdl* *ファイルを右クリックし、[カスタム ツールの実行] をクリックします。
これにより、変更された .csdl ファイルに基づいて、オブジェクト レイヤーが生成されます。
.csdl ファイルのノードを展開し、デザイナー ファイルを開きます。ファイルに別の名前を付けて保存します。
これにより、自動生成されたオブジェクト レイヤー ファイルが保存されます。 このファイルのコードは、トピック「方法: カスタム オブジェクト コンテキストを定義する (Entity Framework)」を参照してください。
デザイナー ファイルをプロジェクトから除外します。
.csdl ファイルを選択し、[プロパティ] ウィンドウの [カスタム ツール] の値をクリアします。
これにより、オブジェクト レイヤー ファイルが再生成されなくなります。 このファイルを後で生成するには、[プロパティ] ウィンドウの [カスタム ツール] に「EntityModelCodeGenerator」と入力し、手順 1. を繰り返します。
例
次の .csdl ファイルは、Contact、Orders、および LineItem カスタム データ クラスをサポートするようにカスタマイズされています。
<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="LineItemSet" EntityType="AdventureWorksModel.LineItem" />
<EntitySet Name="OrderSet" EntityType="AdventureWorksModel.Order" />
<AssociationSet Name="LineItem_Order_SalesOrderIDSet" Association="AdventureWorksModel.LineItem_Order_SalesOrderID">
<End Role="Order" EntitySet="OrderSet" />
<End Role="LineItem" EntitySet="LineItemSet" />
</AssociationSet>
<EntitySet Name="ContactSet" EntityType="AdventureWorksModel.Contact" />
<AssociationSet Name="Order_Contact_ContactID" Association="AdventureWorksModel.Order_Contact_ContactID">
<End Role="Contact" EntitySet="ContactSet" />
<End Role="Order" EntitySet="OrderSet" /></AssociationSet>
</EntityContainer>
<EntityType Name="LineItem">
<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="Order" Relationship="AdventureWorksModel.LineItem_Order_SalesOrderID" FromRole="LineItem" ToRole="Order" />
</EntityType>
<EntityType Name="Order">
<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" />
<Property Name="OnlineOrderFlag" Type="Boolean" Nullable="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="rowguid" Type="Guid" Nullable="false" />
<Property Name="ModifiedDate" Type="DateTime" Nullable="false" />
<NavigationProperty Name="LineItems" Relationship="AdventureWorksModel.LineItem_Order_SalesOrderID" FromRole="Order" ToRole="LineItem" />
<Property Name="ExtendedInfo" Type="AdventureWorksModel.OrderInfo" Nullable="false" />
<NavigationProperty Name="Contact" Relationship="AdventureWorksModel.Order_Contact_ContactID" FromRole="Order" ToRole="Contact" />
</EntityType>
<Association Name="LineItem_Order_SalesOrderID">
<End Role="Order" Type="AdventureWorksModel.Order" Multiplicity="1">
<OnDelete Action="Cascade" />
</End>
<End Role="LineItem" Type="AdventureWorksModel.LineItem" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Order">
<PropertyRef Name="SalesOrderID" />
</Principal>
<Dependent Role="LineItem">
<PropertyRef Name="SalesOrderID" />
</Dependent>
</ReferentialConstraint>
</Association>
<ComplexType Name="OrderInfo">
<Property Type="String" Name="Comment" MaxLength="128" FixedLength="false" Unicode="true" />
<Property Type="String" Name="AccountNumber" MaxLength="15" FixedLength="false" Unicode="true" />
<Property Type="String" Name="PurchaseOrderNumber" MaxLength="25" FixedLength="false" Unicode="true" />
<Property Type="String" Name="SalesOrderNumber" Nullable="false" MaxLength="25" FixedLength="false" Unicode="true" /></ComplexType>
<EntityType Name="Contact">
<Key>
<PropertyRef Name="ContactID" /></Key>
<Property Type="Int32" Name="ContactID" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Type="Boolean" Name="NameStyle" Nullable="false" />
<Property Type="String" Name="Title" MaxLength="8" FixedLength="false" Unicode="true" />
<Property Type="String" Name="FirstName" Nullable="false" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Type="String" Name="MiddleName" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Type="String" Name="LastName" Nullable="false" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Type="String" Name="Suffix" MaxLength="10" FixedLength="false" Unicode="true" />
<Property Type="String" Name="EmailAddress" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Type="Int32" Name="EmailPromotion" Nullable="false" />
<Property Type="String" Name="Phone" MaxLength="25" FixedLength="false" Unicode="true" />
<Property Type="String" Name="PasswordHash" Nullable="false" MaxLength="128" FixedLength="false" Unicode="false" />
<Property Type="String" Name="PasswordSalt" Nullable="false" MaxLength="10" FixedLength="false" Unicode="false" />
<Property Type="String" Name="AdditionalContactInfo" MaxLength="Max" FixedLength="false" Unicode="true" />
<Property Type="Guid" Name="rowguid" Nullable="false" />
<Property Type="DateTime" Name="ModifiedDate" Nullable="false" />
<NavigationProperty Name="Orders" Relationship="AdventureWorksModel.Order_Contact_ContactID" FromRole="Contact" ToRole="Order" /></EntityType>
<Association Name="Order_Contact_ContactID">
<End Type="AdventureWorksModel.Contact" Role="Contact" Multiplicity="1" />
<End Type="AdventureWorksModel.Order" Role="Order" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Contact">
<PropertyRef Name="ContactID" /></Principal>
<Dependent Role="Order">
<PropertyRef Name="ContactID" /></Dependent></ReferentialConstraint></Association>
</Schema>
次の .msl ファイルは、Contact、Orders、および LineItem カスタム データ クラスを AdventureWorks データベース内の Contact、SalesOrderHeader、および SalesOrderDetail テーブルにマップするようにカスタマイズされています。
<Mapping Space="C-S" xmlns="https://schemas.microsoft.com/ado/2008/09/mapping/cs">
<EntityContainerMapping StorageEntityContainer="AdventureWorksModelStoreContainer" CdmEntityContainer="AdventureWorksEntities">
<EntitySetMapping Name="LineItemSet">
<EntityTypeMapping TypeName="AdventureWorksModel.LineItem">
<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="OrderSet">
<EntityTypeMapping TypeName="AdventureWorksModel.Order">
<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="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="rowguid" ColumnName="rowguid" />
<ScalarProperty Name="ModifiedDate" ColumnName="ModifiedDate" />
<ComplexProperty Name="ExtendedInfo">
<ScalarProperty Name="SalesOrderNumber" ColumnName="SalesOrderNumber" />
<ScalarProperty Name="PurchaseOrderNumber" ColumnName="PurchaseOrderNumber" />
<ScalarProperty Name="AccountNumber" ColumnName="AccountNumber" />
<ScalarProperty Name="Comment" ColumnName="Comment" />
</ComplexProperty>
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="ContactSet">
<EntityTypeMapping TypeName="AdventureWorksModel.Contact">
<MappingFragment StoreEntitySet="Contact">
<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="Phone" ColumnName="Phone" />
<ScalarProperty Name="EmailPromotion" ColumnName="EmailPromotion" />
<ScalarProperty Name="EmailAddress" ColumnName="EmailAddress" />
<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" />
<ScalarProperty Name="ContactID" ColumnName="ContactID" /></MappingFragment></EntityTypeMapping></EntitySetMapping>
</EntityContainerMapping>
</Mapping>
次の .ssdl ファイルは、AdventureWorks データベース内の Contact、SalesOrderHeader、および SalesOrderDetail テーブルを使用して Contact、Orders、および LineItem カスタム データ クラスをサポートするようにカスタマイズされています。
<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="Contact" EntityType="AdventureWorksModel.Store.Contact" store:Type="Tables" Schema="Person" />
<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_Contact_ContactID" Association="AdventureWorksModel.Store.FK_SalesOrderHeader_Contact_ContactID">
<End Role="Contact" EntitySet="Contact" />
<End Role="SalesOrderHeader" EntitySet="SalesOrderHeader" />
</AssociationSet>
</EntityContainer>
<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="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_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>
参照
概念
オブジェクトのカスタマイズ (Entity Framework)