2017-10-18 1 views
0

この質問はon MSDNに質問されましたが、実際には答えられませんでした。BusinessIdentityIdを使用するAdventureWorks2016で新しいレコードを挿入する方法

AdventureWorks2016は、いくつかのテーブルの主キーとして "BusinessEntityId"を使用します。これはID列ではありませんが、使用されているすべてのテーブル(Sales.Storeなど)では一意です。

新しいレコードを保存するときのIDはどこから来るのですか?次の有効なIDを取得するためにストアドプロシージャを呼び出さなければならないのは不思議です。

例えば、私がEntity Frameworkを使用している場合、どのように動作するのかわかりませんが、EFの職場での継承を示すために特別に行われたと思われます。

私はこのタイプの構造が有用であることを発見しましたが、EFコアで実際に動作させる方法は見当たりません。

CREATE TABLE [Sales].[Store](
    [BusinessEntityID] [int] NOT NULL, 
    [Name] [dbo].[Name] NOT NULL, 
    [SalesPersonID] [int] NULL, 
    [Demographics] [xml](CONTENT [Sales].[StoreSurveySchemaCollection]) NULL, 
    [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL, 
    [ModifiedDate] [datetime] NOT NULL, 
CONSTRAINT [PK_Store_BusinessEntityID] PRIMARY KEY CLUSTERED 





CREATE TABLE [Person].[Person](
    [BusinessEntityID] [int] NOT NULL, 
    [PersonType] [nchar](2) NOT NULL, 
    [NameStyle] [dbo].[NameStyle] NOT NULL, 
    [Title] [nvarchar](8) NULL, 
    [FirstName] [dbo].[Name] NOT NULL, 
    [MiddleName] [dbo].[Name] NULL, 
    [LastName] [dbo].[Name] NOT NULL, 
    [Suffix] [nvarchar](10) NULL, 
    [EmailPromotion] [int] NOT NULL, 
    [AdditionalContactInfo] [xml](CONTENT [Person].[AdditionalContactInfoSchemaCollection]) NULL, 
    [Demographics] [xml](CONTENT [Person].[IndividualSurveySchemaCollection]) NULL, 
    [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL, 
    [ModifiedDate] [datetime] NOT NULL, 
CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED 
(
    [BusinessEntityID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 
+0

サンプルとしてタブラを入力してください。 –

+0

@ H.Herzlテーブル構造が追加されました –

+0

Sales.StoreテーブルにFK_Store_BusinessEntity_BusinessEntityIDという名前の外部キーが含まれているため、テーブルPerson.BusinessEntityにID列が含まれているため、そのテーブルを子テーブルに挿入する前に保存する必要があります? –

答えて

1

AdventureWorks2016データベースには、Person.BusinessEntityという名前のテーブルがあります。このテーブルには、ID列が含まれています。

Sales.Storeテーブルを確認すると、Person.BusinessEntityテーブルの外部キーが存在します。

まず、Person.BusinessEntityテーブルに保存してから、この場合はSales.Storeという子テーブルに保存する必要があります。

EFコアの内部にはエンティティの構成を追加する必要があり、Person.BusinessEntityテーブルの構成にはIDがあり、Sales.Storeには必須のプロパティが必要です。

保存すると、DbContextインスタンスのDatabaseプロパティを使用してトランザクションを使用できます。

あなたは、例えばCatFactory

はこれが便利であれば、私に教えてくださいあなたは、足場または別のツールを使用することができ、既存のデータベースからEFコアオブジェクトを生成する場合。

+0

はい、ありがとうございます。 –

関連する問題