Entity Framework - таблица первого внешнего ключа БД не будет отображаться как модель

Я создал таблицу с двумя первичными ключами и двумя внешними ключами, причем оба внешних ключа ссылаются на один и тот же столбец в базовой таблице - скрипт следующим образом:

CREATE TABLE [dbo].[TG_PitzulHafrashotShliliVsShotef](
    [PitzulHafrashotIdShlili] [int] NOT NULL,
    [PitzulHafrashotIdShotef] [int] NOT NULL,
    [TaarichIdkun] [datetime2](7) NULL,
PRIMARY KEY CLUSTERED 
(
    [PitzulHafrashotIdShlili] ASC,
    [PitzulHafrashotIdShotef] 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].[TG_PitzulHafrashotShliliVsShotef]  WITH CHECK ADD  CONSTRAINT [FK_TG_PitzulHafrashotShliliVsShotef_TG_PitzulHafrashot] FOREIGN KEY([PitzulHafrashotIdShlili])
REFERENCES [dbo].[TG_PitzulHafrashot] ([Id])
GO

ALTER TABLE [dbo].[TG_PitzulHafrashotShliliVsShotef] CHECK CONSTRAINT [FK_TG_PitzulHafrashotShliliVsShotef_TG_PitzulHafrashot]
GO

ALTER TABLE [dbo].[TG_PitzulHafrashotShliliVsShotef]  WITH CHECK ADD  CONSTRAINT [FK_TG_PitzulHafrashotShliliVsShotef_TG_PitzulHafrashot1] FOREIGN KEY([PitzulHafrashotIdShotef])
REFERENCES [dbo].[TG_PitzulHafrashot] ([Id])
GO

ALTER TABLE [dbo].[TG_PitzulHafrashotShliliVsShotef] CHECK CONSTRAINT [FK_TG_PitzulHafrashotShliliVsShotef_TG_PitzulHafrashot1]
GO

Затем я пошел к своему коду и обновил свою модель из БД, добавил новую таблицу и ожидал увидеть новую сгенерированную модель новой таблицы.

Однако новая модель не генерировалась, и моя базовая модель выглядела так:

  public partial class TG_PitzulHafrashot
    {
        public TG_PitzulHafrashot()
        {
            this.TG_PitzulHafrashot1 = new HashSet<TG_PitzulHafrashot>();
            this.TG_PitzulHafrashot2 = new HashSet<TG_PitzulHafrashot>();
        }
        /* unrelated properties 
        */
        public virtual ICollection<TG_PitzulHafrashot> TG_PitzulHafrashot1 { get; set; }
        public virtual ICollection<TG_PitzulHafrashot> TG_PitzulHafrashot2{ get; set; }
    }

Затем я удалил ограничение FK из новой таблицы и снова обновил модель. После я обновил модель. Теперь новый класс был сгенерирован, как и ожидалось, без ограничений на базовую модель:

public partial class TG_PitzulHafrashotShliliVsShotef
{
    public int PitzulHafrashotIdShlili { get; set; }
    public int PitzulHafrashotIdShotef { get; set; }
    public Nullable<System.DateTime> TaarichIdkun { get; set; }

    public virtual TG_PitzulHafrashot TG_PitzulHafrashot { get; set; }
    public virtual TG_PitzulHafrashot TG_PitzulHafrashot1 { get; set; }
}

Затем я добавил ограничение FK в новую таблицу и еще раз обновил модель - теперь отношения созданы очень хорошо:

   public TG_PitzulHafrashot()
    {
        this.TG_PitzulHafrashotShliliVsShotef = new HashSet<TG_PitzulHafrashotShliliVsShotef>();
        this.TG_PitzulHafrashotShliliVsShotef1 = new HashSet<TG_PitzulHafrashotShliliVsShotef>();
    }

    /* unrelated properties
    */        

    public virtual ICollection<TG_PitzulHafrashotShliliVsShotef> TG_PitzulHafrashotShliliVsShotef { get; set; }
    public virtual ICollection<TG_PitzulHafrashotShliliVsShotef> TG_PitzulHafrashotShliliVsShotef1 { get; set; }
}

Мой вопрос заключается в том, разве структура сущности не так, как правильно генерировать модель с внешними ключами?

это была очень странная ситуация, так как новая таблица была добавлена ​​к SqlServer.edmx Однако файл не был показан в конструкторе, и соответствующие модели никогда не создавались, только после того, как я создал таблицу без ограничений.

Есть ли какое-нибудь решение для ограничения внешнего ключа в EF db первым?

0 ответов

Другие вопросы по тегам