2010-04-22 3 views
0

Когда я щелкнул правой кнопкой мыши файл .EDMX и щелкнул Generate Database From Model, получившийся скрипт явно ошибочен из-за имен таблиц. Генерируется следующий сценарий. Обратите внимание на названия таблиц в части DROP TABLE по сравнению с частью CREATE TABLE.EF4 генерирует недопустимый скрипт

Почему это непоследовательно?

Это, очевидно, не многоразовый скрипт. То, что я создал, было Entity с именем «Address» и Entity под названием «Компания» и т. Д. (Все единственные). Имена EntitySet являются множественными. Логическое значение «Pluralize New Objects» также не изменяет. Так в чем дело?

Для чего это необходимо, я изначально создал EDMX, указав его на базу данных, в которой были таблицы с именами, не имеющими плюрализма, и теперь, когда я внес некоторые изменения, я хочу вернуться в другую сторону. Я хотел бы иметь возможность идти туда и обратно, поскольку ни первая, ни первая модель не являются идеальными во всех сценариях, и у меня есть контроль, чтобы гарантировать, что не будет проблем с объединением от нескольких людей, идущих как пути в то же время.

-- -------------------------------------------------- 
-- 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 
-- -------------------------------------------------- 

ответ

0

Мне не удалось найти ответ на эту проблему. Кроме того, у меня возникли проблемы с воссозданием этой проблемы, когда я не буду возвращаться от БД к первым сценариям. Как таковой, я просто предполагаю, что back-and-forth вызвал проблемы, и это плохая ситуация, чтобы пропустить EF.

Смежные вопросы