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

сначала сопоставьте один к одному с несколькими столбцами первичного ключа.

У меня есть 2 таблицы с 2 столбцами первичного ключа. Их структура такова:

public class X
{
    public int Id {get;set;}
    public int line {get;set;}
}

public class Y
{
    public int Id {get;set;}
    public int line {get;set;}
}

Они связаны отношением один к одному.

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

Таблица Y необязательна, но таблица X обязательна.

Заранее спасибо.


  • Мне всегда интересно, какой смысл иметь отношения один к одному. Если отношение один к одному, почему бы не иметь одну таблицу/класс? 21.03.2013
  • @BenRobinson Сначала я всегда удивляюсь этому, но это могло быть связано с проблемами безопасности. Есть некоторые пользователи, которым не разрешено или у которых нет достаточных привилегий для просмотра некоторых деталей в другой таблице, поэтому они разделяют ее. 21.03.2013

Ответы:


1

Если я правильно понял, возможно, это то, что вы ищете:

public class X
{
    [Key, ForeignKey("Y"), Column(Order=0)]
    public int ID { get; set; }
    [Key, ForeignKey("Y"), Column(Order=1)]
    public int line { get; set; }

    public virtual Y Y { get; set; }
}

public class Y
{
    [Key, Column(Order=0)]
    public int ID { get; set; }
    [Key, Column(Order=1)]
    public int line { get; set; }

    public virtual X X { get; set; }
}

С атрибутом Key вы говорите EF, что эти свойства будут ключами вашей таблицы. Добавление атрибута ForeignKey предоставляет EF информацию о том, какое свойство навигации представляет отношение, для которого оно является внешним ключом. Наконец, атрибут Column сообщает EF, какое свойство X должно соответствовать какому свойству Y. Если я неправильно понял вашу проблему, пожалуйста, дайте мне знать, чтобы я мог изменить свой ответ.

25.03.2013

2
public class X
{
    [Key]
    public int ID { get; set; }
    public int line {get; set;}

    public virtual Y Y { get; set; }
}

public class Y
{
    [Key]
    public int ID { get; set; }
    public int line {get; set;}

    public virtual X X { get; set; }
}

и добавить конфигурацию,

modelBuilder.Entity<X>()
            .HasOptional<Y>(u => u.ID)
            .WithOptionalDependent(c => c.ID)
            .Map(p => p.MapKey("ID"));
21.03.2013
  • Таблицы связаны с 2 первичными ключами. Как настроить оба? В вашем примере вы используете только столбец Id Key. 21.03.2013
  • Новые материалы

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

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

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

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

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

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

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