4

мой вопрос довольно прост, и я много искал ответ, но не смог найти решение. Однако это не похоже на необычный сценарий, поэтому, если я упускаю из виду что-то простое или есть ссылка, которую я упустил, это касается моей проблемы, я был бы благодарен за какое-то руководство! Здесь ....Net Core Reverse-Engineering с подключением к базе данных DNS

При попытке подключиться к существующей базе данных за пределами моего нового проекта .Net Core. Я следую инструкциям для обратной инженерии здесь: https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

Эти инструкции работают для db на моей локальной машине, но когда я запускаю Scaffold-DbContext со строкой подключения к DNS базы данных для внешнего сервера, он создает контекст, но не сущностей. Так что мой файл класса контекста выглядит следующим образом:

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

окно ErrorList относится к #warning на линии 11 выше (то есть предупреждение, чтобы защитить потенциально конфиденциальную информацию в строке соединения) кода. Я понимаю следующий шаг после того, как это обратное проектирование - это переустановить строку подключения, и что #warning является общим предупреждением, а не препятствием для процесса обратной инженерии.

Учетные данные, которые я пробовал, включают пользователя sa, а также ограниченного пользователя. Оба имеют одинаковые результаты, поэтому, похоже, это не проблема с правами доступа.

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

Любые идеи или отзывы были бы очень признательны!

+0

Спасибо, что нашли время, чтобы ответить, Цзэн. Однако перемещение строки подключения не решает мою проблему, так как команде Scaffold-DbContext требуется строка подключения. Как только строка соединения перемещается в Startup.cs, есть ли способ, с помощью которой я могу ссылаться на re-scaffold OR, есть ли способ обновить эшафот, используя пересмотренный контекст? –

+0

Является ли ваш контекст в том же приложении, что и веб-проект? В настоящее время существует ограничение на то, что инструменты командной строки работают только в том случае, если контекст находится в приложении и не будет работать в библиотеках классов. Существует обходное решение, хотя https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-is-not-supported – Tseng

+0

Является ли db, с которого вы успешно сгенерировали объекты из то же (схема), как тот, с которым вы пытаетесь подключиться через DSN? –

ответ

22

Убедитесь, что ваши таблицы имеют первичные ключи.

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

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