Nano Hash - криптовалюты, майнинг, программирование

Как определить первичный ключ с помощью внешней таблицы Sql Server 2017

Я работаю над несколькими базами данных azure sql и пытаюсь объединить данные с помощью эластичного запроса.

  1. Я создал внешние таблицы.
  2. Когда я пытаюсь создать сущность из EF Core. это не удается, и я получаю ошибку ниже.

Не удалось определить первичный ключ для таблицы "xxxx". Не удалось сгенерировать тип объекта для таблицы «xxxx».

Как создать первичный ключ для внешней таблицы или как создать сущность для внешней таблицы с помощью EF Core.


  • Вы спрашиваете, как создать первичный ключ в таблице? 10.05.2019
  • Да, но первичный ключ во внешней таблице Sql Server не с обычными таблицами, или как я могу создать сущность для внешней таблицы с ядром EF. Или есть ли способ сделать запрос с помощью dbcontext к внешним таблицам? 11.05.2019
  • Вы про полибейс? docs.microsoft.com/en-us/sql/t-sql/statements/ 12.05.2019
  • Вы пытались определить ключ для своей сущности? 12.05.2019
  • William Xifaras, да, именно я ищу что-то для PolyBase. 13.05.2019

Ответы:


1

В настоящее время SQL Server не поддерживает возможность добавления PRIMARY KEY к EXTERNAL TABLE. Однако, поскольку вы используете Entity Framework, есть несколько способов обойти это.

Самым простым решением было бы украсить требуемое свойство объекта атрибутом KeyAttribute и, при необходимости, DatabaseGeneratedAttribute и или ColumnAttribute следующим образом:

public class Employee
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Column("Id")]
    public int EmployeeId { get; set; }
}

Другой вариант — переопределить OnModelCreating и используйте Fluent API для определения свойств ваших моделей:

public class HumanResourcesContext : DbContext
{
    public DbSet<Employee> Employees { get; set; }

    public override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder):

        modelBuilder.Entity<Employee>
                    .HasKey(x => x.EmployeeId);
        modelBuilder.Entity<Employee>
                    .Property(x => x.EmployeeId)
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
                    .HasColumnName("Id");
    }
}

Если приведенные выше варианты не подходят, вы всегда можете создать локальную таблицу с той же структурой, применить к ней первичный ключ, а затем создать свою модель. Получив определение модели, вы можете вернуться в SQL Server, удалить локальную таблицу, а затем воссоздать ее как внешнюю таблицу.

11.01.2020
  • .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) кажется устаревшим, но UseIdentityColumn() тоже должен помочь. 06.02.2020
  • Что мы узнали из всего того, что внешняя таблица не может иметь первичный ключ, это ограничение, мы также поняли, что можем использовать DbQuery вместо DbSet. И мы также поняли, что в инфраструктуре сущностей 3.x есть изменения для определения внешней таблицы, поскольку DbQuery устарел. 24.04.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..