0

Supposons que je la définition de tableau ci-dessous avec une clé primaire composite:Entity Framework 6 Database First ne génère pas d'entité sur table avec clé composite

create table [dbo].[CustomerRequests] (
    [CustomerId] int not null, 
    [RequestId] int not null, 
    constraint [PK_CustomerRequests] primary key clustered ([CustomerId] asc, [RequestId] asc), 
    constraint [FK_CustomerRequests_Customers] foreign key ([CustomerId]) references [dbo].[Customers] ([CustomerId]), 
    constraint [FK_CustomerRequests_Requests] foreign key ([RequestId]) references [dbo].[Requests] ([RequestId]) 
); 

Lorsque je mets à jour le modèle pour inclure ce tableau, Entity Framework ne parvient pas à générer la classe d'entité. Est-ce dû à la clé primaire composite? Est-il possible de faire Entity Framework générer la classe d'entité?

+0

Lorsque j'ai utilisé EF, nous avons créé les entités dans le code, puis utilisé les migrations pour créer les tables SQL. Je pense qu'il ignore les tables créées manuellement dans SQL. Pas totalement positif, je veux juste que je l'ai vécu. –

+2

EF crée une association plusieurs-à-plusieurs avec cette table de manière invisible au milieu. Si vous ne le souhaitez pas, donnez à la table une seule clé primaire de substitution (ou tout autre champ significatif). –

Répondre

0

Le commentaire de Gert Arnold m'a indiqué dans la bonne direction, tout comme this answer.

Une fois que j'ai ajouté une autre colonne en plus des deux clés primaires, Entity Framework a généré l'entité. Voici un exemple de définition de table pour laquelle EF Database First va créer une entité:

create table [dbo].[CustomerRequests] (
    [CustomerId] int not null, 
    [RequestId] int not null, 
    [TimestampUtc] datetime not null, 
    constraint [PK_CustomerRequests] primary key clustered ([CustomerId] asc, [RequestId] asc), 
    constraint [FK_CustomerRequests_Customers] foreign key ([CustomerId]) references [dbo].[Customers] ([CustomerId]), 
    constraint [FK_CustomerRequests_Requests] foreign key ([RequestId]) references [dbo].[Requests] ([RequestId]) 
);