この質問は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
サンプルとしてタブラを入力してください。 –
@ H.Herzlテーブル構造が追加されました –
Sales.StoreテーブルにFK_Store_BusinessEntity_BusinessEntityIDという名前の外部キーが含まれているため、テーブルPerson.BusinessEntityにID列が含まれているため、そのテーブルを子テーブルに挿入する前に保存する必要があります? –