4 votes

.Net Core Reverse-Engineering avec connexion DNS à la base de données

Ma question est assez simple et j'ai fait beaucoup de recherches pour trouver une réponse mais je n'ai pas réussi à trouver une solution. Cela ne semble pas être un scénario rare, cependant, alors si j'ai oublié quelque chose de simple ou s'il existe une référence que j'ai oubliée et qui répond à mon problème, je vous serais reconnaissant de m'aider ! Voilà...

J'essaie de me connecter à une base de données existante, hors site, par le biais de mon nouveau projet .Net Core. J'ai suivi les instructions pour l'ingénierie inverse ici : https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

Ces instructions fonctionnent pour une base de données sur ma machine locale, mais lorsque j'exécute Scaffold-DbContext avec une chaîne de connexion à une base de données DNS pour un serveur hors site, il crée le contexte mais aucune entité. Mon fichier de classe de contexte ressemble donc à ceci :

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace CensusApi.Models
{
    public partial class CensusDbContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        #warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
        optionsBuilder.UseSqlServer(@"Server=database.dns.org,[port];Database=mydatabase;Integrated Security=False;User ID=myuser;Password=mypassword;");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }

    // Unable to generate entity type for table 'dbo.LANDING_DEMOGRAPHICS_2010'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.LANDING_ECONOMIC_2007_2011'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.LANDING_STATE_FIPS'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.LANDING_ZIP_STATE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.SAMAIN_ZIP_STATE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_HOUSEHOLDS'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_HOUSING_OCCUPANCY'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_AGE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_INCOME'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION_BY_RANGE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_RACE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_RACE_HISPANIC_AND_LATINO'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_RELATIONSHIP'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.STAGE_ZIP_STATE'. Please see the warning messages.
    // Unable to generate entity type for table 'dbo.LogShipStatus'. Please see the warning messages.
    }
}

La fenêtre ErrorList fait référence à l'avertissement #warning de la ligne 11 du code ci-dessus (c'est-à-dire l'avertissement de protéger les informations potentiellement sensibles dans la chaîne de connexion). Je me rends compte que l'étape suivante après cette rétro-ingénierie est de relocaliser la chaîne de connexion, et que le #warning semble être un avertissement générique et non une entrave au processus de rétro-ingénierie.

Les informations d'identification que j'ai essayées comprenaient l'utilisateur sa ainsi qu'un utilisateur restreint. Les deux ont donné les mêmes résultats, il ne semble donc pas s'agir d'un problème d'autorisations.

Existe-t-il une méthode ou un cadre différent que je devrais utiliser pour me connecter à un serveur extérieur ?

Toute idée ou tout retour d'information serait grandement apprécié !

22voto

Andrew Points 359

Assurez-vous que vos tables ont des clés primaires.

J'ai obtenu ce message d'erreur avec une seule table dans ma base de données, j'ai réalisé que j'avais oublié la clé primaire et après avoir exécuté à nouveau la commande DbScaffold, tout s'est bien passé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X