Intereting Posts
Выбор частоты результата, который может отображаться в нескольких столбцах (SQL) Учитывая значение RGB, какой был бы лучший способ найти ближайшее соответствие в базе данных? Выберите уникальную запись, основанную на приоритете значения столбца ORA-30926: невозможно получить стабильный набор строк в исходных таблицах при слиянии таблиц SQL-столбец поиска, в котором один элемент в столбце является подстрокой другого элемента Sql – Явный порядок условий ГДЕ? структура модели базы данных Как сохранить строку var больше, чем varchar (max)? Переименуйте столбец select в sql Как отобразить данные sys_refcursor в DataGrid от TOAD Подзапрос возвращает более 1 ряд Ошибка при обновлении сетевых интерфейсов DB: SQL, ошибка: 26 – Ошибка определения местоположения сервера / экземпляра Извлечение значений из поля XML в MS-SQL Server 2008 Сохранять значение столбца autonumber при импорте в базу данных Microsoft Access как присоединиться к двум таблицам mysql

Первичные конфликты базы данных Entity Framework

Большинство других вопросов, которые я видел в этих конфликтах множественности, были в первую очередь кодом, где, как я сначала делаю DB. Я внес некоторые изменения схемы, и я получаю следующую ошибку, когда обновляю мою модель из базы данных:

Множественность конфликтует с реляционным ограничением в роли «ставка» в отношении «FK_MarketSelectionWager_Bet». Поскольку все свойства в зависимой роли не имеют значения NULL, множественность главной роли должна быть «1».

Любые указатели на то, что мне нужно сделать, чтобы исправить в SQL или моей модели было бы здорово.

Ниже приведены таблицы SQL:

MarketSelectionWager / * Object: Таблица [dbo]. [MarketSelectionWager] Дата скрипта: 31/01/2014 12:08:34 * / SET ANSI_NULLS ON GO

SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[MarketSelectionWager]( [MarketSelectionWagerIdentifier] [varchar](255) NOT NULL, [MarketIdentifier] [varchar](255) NULL, [SelectionName] [varchar](255) NULL, [SelectionIdentifier] [varchar](255) NULL, [WagerIdentifier] [varchar](255) NULL, [PriceType] [varchar](5) NULL, [PriceFrac] [varchar](50) NULL, [WagerStakeWin] [money] NULL, [WagerStakePlace] [money] NULL, [RunningStakeWin] [money] NULL, [RunningStakePlace] [money] NULL, [LiabilityWin] [money] NULL, [LiabilityPlace] [money] NULL, [BetIdentifier] [varchar](255) NULL, [BetCombinationIndex] [int] NULL, [WagerStatus] [int] NULL, [NumberRunningAfter] [int] NULL, [NumberRunningSameTime] [int] NULL, [TimeToNextRemainingRunner] [int] NULL, [HasOtherSelectionsRunningSameTime] [bit] NULL, [HasOtherSelectionsRunningAfter] [bit] NULL, [BetId] [int] NOT NULL, CONSTRAINT [PK_MarketLiabilty] PRIMARY KEY CLUSTERED ( [MarketSelectionWagerIdentifier] ASC, [BetId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[MarketSelectionWager] WITH CHECK ADD CONSTRAINT [FK_MarketSelectionWager_Bet] FOREIGN KEY([BetId]) REFERENCES [dbo].[Bet] ([BetID]) ON DELETE CASCADE GO ALTER TABLE [dbo].[MarketSelectionWager] CHECK CONSTRAINT [FK_MarketSelectionWager_Bet] GO 

Делать ставку

 /****** Object: Table [dbo].[Bet] Script Date: 31/01/2014 12:09:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Bet]( [BetID] [int] IDENTITY(1,1) NOT NULL, [BetSlipID] [int] NOT NULL, [BetPayout] [money] NULL, [BetPotentialReturn] [money] NULL, [BetStake] [money] NULL, [BetRefund] [money] NULL, [DateBetSettled] [datetime] NULL, [SettleStatusID] [int] NULL, [SportID] [int] NULL, [tsTimestamp] [timestamp] NULL, [SportMixID] [int] NULL, [WagerTypeMixID] [int] NULL, [EventMixID] [int] NULL, [MarketMixID] [int] NULL, [SettleTypeID] [int] NULL, [MaxOffDate] [datetime] NULL, CONSTRAINT [PK_Bet] PRIMARY KEY CLUSTERED ( [BetID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[Bet] ADD CONSTRAINT [DF_BS_Bet_BetPayout] DEFAULT ((0)) FOR [BetPayout] GO ALTER TABLE [dbo].[Bet] ADD CONSTRAINT [DF_BS_Bet_BetPotentialReturn] DEFAULT ((0)) FOR [BetPotentialReturn] GO ALTER TABLE [dbo].[Bet] ADD CONSTRAINT [DF_BS_Bet_BetStake] DEFAULT ((0)) FOR [BetStake] GO ALTER TABLE [dbo].[Bet] ADD CONSTRAINT [DF_BS_Bet_BetRefund] DEFAULT ((0)) FOR [BetRefund] GO ALTER TABLE [dbo].[Bet] WITH CHECK ADD CONSTRAINT [FK_Bet_BetSlip] FOREIGN KEY([BetSlipID]) REFERENCES [dbo].[BetSlip] ([BetSlipId]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Bet] CHECK CONSTRAINT [FK_Bet_BetSlip] GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetSlipID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetSlipID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetSlipID' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPayout' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPayout' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPayout' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPotentialReturn' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPotentialReturn' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=2250 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetPotentialReturn' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetStake' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetStake' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetStake' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetRefund' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetRefund' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'BetRefund' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnHidden', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'DateBetSettled' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnOrder', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'DateBetSettled' GO EXEC sys.sp_addextendedproperty @name=N'MS_ColumnWidth', @value=-1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet', @level2type=N'COLUMN',@level2name=N'DateBetSettled' GO EXEC sys.sp_addextendedproperty @name=N'MS_DefaultView', @value=0x02 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_Filter', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_LinkChildFields', @value=N'BetID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_LinkMasterFields', @value=N'BetID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_OrderBy', @value=NULL , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_OrderByOn', @value=0 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_Orientation', @value=0x00 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_SubdatasheetName', @value=N'dbo.BS_Selection' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO EXEC sys.sp_addextendedproperty @name=N'MS_TableMaxRecords', @value=10000 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Bet' GO 

Когда инфраструктура Entity обновляет модель из базы данных, есть вещи, которые она делает и не делает. Он добавляет новые объекты, поля и ассоциации и многое другое (я думаю, что только команда EF может составить исчерпывающий список). Я испытал, что он не обновляет ограничения множественности в концептуальной модели.

Поэтому, когда вы добавляете ограничение NOT NULL в столбец базы данных ( BetId в вашем случае), модель хранилища будет обновлена, но концептуальная модель (модель класса) будет зависать с исходной ассоциацией с нулевым значением ( 0..1 - n ). Вы заметите, что модель больше не проходит проверку, и это выглядит довольно страшно (в конце концов, вы только обновляетесь), но исправление легко: в дизайнере edmx вручную измените кратность «1» стороны ассоциация, поэтому она становится 1-n .