0
當我在.EDMX
文件中右鍵單擊,然後單擊Generate Database From Model
時,由於表名稱,產生的腳本顯然是錯誤的。它生成的是以下腳本。請注意0部分中的表名與CREATE TABLE
部分中的表名。EF4生成無效腳本
這是爲什麼不一致?
這顯然不是一個可重複使用的腳本。我創建的是一個名爲「Address」的實體和一個名爲「Company」的實體等(都是單數形式)。 EntitySet名稱被複數化。 「多重新對象」布爾值也不會改變這個。那麼交易是什麼?
對於它的價值,我最初生成EDMX的方法是將它指向一個具有非複數名稱表的數據庫,現在我已經做了一些更改,我想以其他方式返回。我希望可以選擇來回切換,因爲db-first和model-first模型在所有情況下都不是理想的,並且我有控制權確保不會有多人同時出現合併問題方式在同一時間。
-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- NOTE: if the constraint does not exist, an ignorable error will be reported.
-- --------------------------------------------------
ALTER TABLE [Address] DROP CONSTRAINT [FK_Address_StateID-State_ID];
GO
ALTER TABLE [Company] DROP CONSTRAINT [FK_Company_AddressID-Address_ID];
GO
ALTER TABLE [Employee] DROP CONSTRAINT [FK_Employee_BossEmployeeID-Employee_ID];
GO
ALTER TABLE [Employee] DROP CONSTRAINT [FK_Employee_CompanyID-Company_ID];
GO
ALTER TABLE [Employee] DROP CONSTRAINT [FK_Employee_PersonID-Person_ID];
GO
ALTER TABLE [Person] DROP CONSTRAINT [FK_Person_AddressID-Address_ID];
GO
-- --------------------------------------------------
-- Dropping existing tables
-- NOTE: if the table does not exist, an ignorable error will be reported.
-- --------------------------------------------------
DROP TABLE [Address];
GO
DROP TABLE [Company];
GO
DROP TABLE [Employee];
GO
DROP TABLE [Person];
GO
DROP TABLE [State];
GO
-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------
-- Creating table 'Addresses'
CREATE TABLE [Addresses] (
[ID] int IDENTITY(1,1) NOT NULL,
[StreetAddress] nvarchar(100) NOT NULL,
[City] nvarchar(100) NOT NULL,
[StateID] int NOT NULL,
[Zip] nvarchar(10) NOT NULL
);
GO
-- Creating table 'Companies'
CREATE TABLE [Companies] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[AddressID] int NOT NULL
);
GO
-- Creating table 'People'
CREATE TABLE [People] (
[ID] int IDENTITY(1,1) NOT NULL,
[FirstName] nvarchar(100) NOT NULL,
[LastName] nvarchar(100) NOT NULL,
[AddressID] int NOT NULL
);
GO
-- Creating table 'States'
CREATE TABLE [States] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Abbreviation] nvarchar(2) NOT NULL
);
GO
-- Creating table 'Employees'
CREATE TABLE [Employees] (
[ID] int IDENTITY(1,1) NOT NULL,
[PersonID] int NOT NULL,
[CompanyID] int NOT NULL,
[Position] nvarchar(100) NOT NULL,
[BossEmployeeID] int NULL
);
GO
-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------
-- Creating primary key on [ID] in table 'Addresses'
ALTER TABLE [Addresses]
ADD CONSTRAINT [PK_Addresses]
PRIMARY KEY ([ID]);
GO
-- Creating primary key on [ID] in table 'Companies'
ALTER TABLE [Companies]
ADD CONSTRAINT [PK_Companies]
PRIMARY KEY ([ID]);
GO
-- Creating primary key on [ID] in table 'People'
ALTER TABLE [People]
ADD CONSTRAINT [PK_People]
PRIMARY KEY ([ID]);
GO
-- Creating primary key on [ID] in table 'States'
ALTER TABLE [States]
ADD CONSTRAINT [PK_States]
PRIMARY KEY ([ID]);
GO
-- Creating primary key on [ID] in table 'Employees'
ALTER TABLE [Employees]
ADD CONSTRAINT [PK_Employees]
PRIMARY KEY ([ID]);
GO
-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------
-- Creating foreign key on [StateID] in table 'Addresses'
ALTER TABLE [Addresses]
ADD CONSTRAINT [FK_Address_StateID_State_ID]
FOREIGN KEY ([StateID])
REFERENCES [States]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Address_StateID_State_ID'
CREATE INDEX [IX_FK_Address_StateID_State_ID]
ON [Addresses]
([StateID]);
GO
-- Creating foreign key on [AddressID] in table 'Companies'
ALTER TABLE [Companies]
ADD CONSTRAINT [FK_Company_AddressID_Address_ID]
FOREIGN KEY ([AddressID])
REFERENCES [Addresses]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Company_AddressID_Address_ID'
CREATE INDEX [IX_FK_Company_AddressID_Address_ID]
ON [Companies]
([AddressID]);
GO
-- Creating foreign key on [AddressID] in table 'People'
ALTER TABLE [People]
ADD CONSTRAINT [FK_Person_AddressID_Address_ID]
FOREIGN KEY ([AddressID])
REFERENCES [Addresses]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Person_AddressID_Address_ID'
CREATE INDEX [IX_FK_Person_AddressID_Address_ID]
ON [People]
([AddressID]);
GO
-- Creating foreign key on [CompanyID] in table 'Employees'
ALTER TABLE [Employees]
ADD CONSTRAINT [FK_Employee_CompanyID_Company_ID]
FOREIGN KEY ([CompanyID])
REFERENCES [Companies]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Employee_CompanyID_Company_ID'
CREATE INDEX [IX_FK_Employee_CompanyID_Company_ID]
ON [Employees]
([CompanyID]);
GO
-- Creating foreign key on [BossEmployeeID] in table 'Employees'
ALTER TABLE [Employees]
ADD CONSTRAINT [FK_Employee_BossEmployeeID_Employee_ID]
FOREIGN KEY ([BossEmployeeID])
REFERENCES [Employees]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Employee_BossEmployeeID_Employee_ID'
CREATE INDEX [IX_FK_Employee_BossEmployeeID_Employee_ID]
ON [Employees]
([BossEmployeeID]);
GO
-- Creating foreign key on [PersonID] in table 'Employees'
ALTER TABLE [Employees]
ADD CONSTRAINT [FK_Employee_PersonID_Person_ID]
FOREIGN KEY ([PersonID])
REFERENCES [People]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_Employee_PersonID_Person_ID'
CREATE INDEX [IX_FK_Employee_PersonID_Person_ID]
ON [Employees]
([PersonID]);
GO
-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------