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

Внешний ключ Entity Framework с первым набором кода с первичным ключом в той же таблице

У меня есть этот WdUser класс, унаследованный от SysModelBase:

[Serializable]
public class WdUser : SysDomainModelBase, IWdUser
{
    [Display(Name = "UserName")]
    [MaxLength(25)]
    [Required]
    public string UserName { get; set; }

    [Required]
    [Index(IsUnique = true)]
    [MaxLength(25)]
    [Display(Name = "LoginName ")]
    public string LoginName { get; set; }

    [Display(Name = "Password ")]
    [MaxLength(50)]
    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Display(Name = "Email 地址")]
    [DataType(DataType.EmailAddress)]
    [MaxLength(50)]
    public string Email { get; set; }

    [Display(Name = "Telephone ")]
    [DataType(DataType.PhoneNumber)]
    [MaxLength(15)]
    public string Telephone { get; set; }

    [Display(Name = "LastLoginDateTime ")]
    [DataType(DataType.DateTime)]
    public DateTime LastLoginDateTime { get; set; }

    [Required]
    [Display(Name = "UserStatus ")]
    public UserStatus Status { get; set; }

    [Display(Name = "Roles ")]
    public List<WdRole> Roles { get; set; }

    public bool IsInRole(string role) => Roles.Any(item => item.RoleName == role);

    [NotMapped]
    public IIdentity Identity { get; set; }
}

на который похож SysModelBase

[Serializable]
public class SysModelBase : ModelBase, ISysModel
{
    [JsonIgnore]
    [DataType(DataType.DateTime)]
    public DateTime CreateDateTime { get; set; }

    [JsonIgnore]
    public WdUser CreateUser { get; set; }

    [JsonIgnore]
    [DataType(DataType.DateTime)]
    public DateTime LastUpdateDateTime { get; set; }

    [JsonIgnore]
    public WdUser LastUpdateUser { get; set; }

    [JsonIgnore]
    public bool IsDeleted { get; set; }

    public bool IsEnabled { get; set; }
}

Когда я запускаю этот код, я получаю сообщение об ошибке:

Невозможно определить основной конец ассоциации между типами SHWDTech.Platform.Model.Model.WdUser и SHWDTech.Platform.Model.Model.WdUser. Главный конец этой связи должен быть явно настроен с использованием API-интерфейса текучей связи или аннотаций данных.

Как мне установить отношения с WdUser классом?

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



Ответы:


1

Например

public class WdUser : SysDomainModelBase, IWdUser
{
//This is your primary key of WDUser
public int UserID{get;set;}
//This is for your foreign key mapping
public virtual WDUser WDUser{get;set;}
public virtual  ICollection<WDUser> WDUserList{get;set;}
}

Это все

11.03.2016
  • Спасибо, но у меня есть два свойства WdUser, если у меня два свойства WdUserList? 11.03.2016
  • Я не понял тебя. Вы спрашиваете, хотите ли вы 2 внешних ключа для одной и той же таблицы (как я уже объяснил, это один внешний ключ). Если вам нужны 2 внешних ключа, вам лучше использовать свободный API. 11.03.2016
  • Да, мне просто нужны 2 внешних ключа для одной таблицы, и очень много баков. 11.03.2016

  • 2

    Этот ответ для вашего требования 2 внешних ключей

    public class WdUser : SysDomainModelBase, IWdUser
    {
    //This is your primary key of WDUser
    public int UserID{get;set;}
    //This is for your 1st foreign key mapping
    public virtual WDUser WDUser{get;set;}
    public virtual  ICollection<WDUser> WDUserList{get;set;}
    public int fk1{get;set;}
    //This is for your 2nd foreign key mapping
    public virtual  ICollection<WDUser> WDUserList1{get;set;}
    public int fk2{get;set;}
    }
    

    ваш свободный API будет

    //mapping for 1st foreign key
         dbModelBuilder.Entity<WDUser>()
                            .HasKey(wdUser=> wdUser.Id)
                            .HasRequired<Tasks>(wdUser => wdUser.WDUser)
                            .WithMany(s => s.WDUserList)
                            .HasForeignKey(s => .fk1).WillCascadeOnDelete(false); 
    
    
    
        //mapping for 2st foreign key
     dbModelBuilder.Entity<WDUser>()
                        .HasKey(wdUser=> wdUser.Id)
                        .HasRequired<Tasks>(wdUser => wdUser.WDUser)
                        .WithMany(s => s.WDUserList1)
                        .HasForeignKey(s => .fk2).WillCascadeOnDelete(false); 
    
    13.03.2016
    Новые материалы

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

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

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

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

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

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

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