Arhn - архитектура программирования

Тип данных моего внешнего ключа не совпадает

Я использую первые миграции кода объекта, и он продолжает говорить мне

Столбец «dbo.Users.u_user_id» не имеет того же типа данных, что и ссылающийся столбец «PTEInteractiveCourses.ModifyUserId» во внешнем ключе «FK_dbo.PTEInteractiveCourses_dbo.Users_ModifyUserId». Не удалось создать ограничение. См. предыдущие ошибки.

когда я пытаюсь обновить базу данных после создания миграции. Вот PTEInteractivieCourse:

namespace PTEManager.Domain
{
    public class PTEInteractiveCourse
    {
        [Key]
        public Guid PTEInteractiveCourseId { get; set; }

        [ScaffoldColumn(false)]
        [Required]
        public DateTime ModifyDate { get; set; }

        [ScaffoldColumn(false)]
        [ForeignKey("ModifyUser")]
        [Required]
        public double ModifyUserId { get; set; }

        public virtual OpsUser ModifyUser { get; set; }

        [Display(Name = "Package")]
        [ForeignKey("package_nme")]
        [Required]
        public int PackageId { get; set; }

        public virtual Package package_nme { get; set; }

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

        [Display(Name = "STCI Course")]
        [ForeignKey("STCICourseName")]
        [Required]
        public Guid STCIProductInteractiveInfoID { get; set; }

        public virtual STCIProductInteractiveInfo STCICourseName { get; set; }
    }
}

а вот моя таблица:

введите здесь описание изображения

Вот моя пользовательская модель на всякий случай:

namespace PTEManager.Domain
{
    public partial class OpsUser
    {
        public double u_user_id { get; set; }

        public Guid DepartmentID { get; set; }

        public string email_addr { get; set; }

        public string first_nme { get; set; }

        public string last_nme { get; set; }

        public Guid msrepl_tran_version { get; set; }

        public string status { get; set; }

        public string user_nme { get; set; }

        public int u_branch_id { get; set; }

    }
}

и пользовательская карта:

namespace PTEManager.Domain.Mapping
{
    class UserMap : EntityTypeConfiguration<OpsUser>
    {
        public UserMap()
        {
            // Primary Key
            this.HasKey(t => t.u_user_id);

            // Properties
            this.Property(t => t.DepartmentID);

            this.Property(t => t.email_addr)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.first_nme)
                .IsRequired()
                .HasMaxLength(30);

            this.Property(t => t.last_nme)
                .IsRequired()
                .HasMaxLength(30);

            this.Property(t => t.msrepl_tran_version)
                .IsRequired();

            this.Property(t => t.status)
                .IsRequired()
                .HasMaxLength(1);

            this.Property(t => t.user_nme)
                .IsRequired()
                .HasMaxLength(15);

            this.Property(t => t.u_branch_id)
                .IsRequired();

            // Table & Column Mappings
            this.ToTable("Users");
            this.Property(t => t.u_user_id).HasColumnName("u_user_id");
            this.Property(t => t.DepartmentID).HasColumnName("DepartmentID");
            this.Property(t => t.email_addr).HasColumnName("email_addr");
            this.Property(t => t.first_nme).HasColumnName("first_nme");
            this.Property(t => t.last_nme).HasColumnName("last_nme");
            this.Property(t => t.msrepl_tran_version).HasColumnName("msrepl_tran_version");
            this.Property(t => t.status).HasColumnName("status");
            this.Property(t => t.user_nme).HasColumnName("user_nme");
            this.Property(t => t.u_branch_id).HasColumnName("u_branch_id");
        }
    }
}

  • Если я правильно читаю ваш код, FK в OpsUser — это double, а PK в вашей таблице — это numeric(10,0). Это определенно не один и тот же тип данных, отсюда и ваша ошибка. 13.08.2015
  • @MartinParkin, теперь я попробовал длинное, десятичное и целое, и это тоже не работает. В C# нет числового типа 13.08.2015

Ответы:


1

Чтобы опираться на то, что говорит Мартин Паркин, ваши типы данных не совпадают между вашей сущностью и вашей базой данных. Я бы также посоветовал не использовать double в качестве PK или FK в большинстве случаев. На самом деле вы хотели бы, чтобы это было целым числом или длинным.

числовой (10,0) = целое число

числовой (19,0) = длинный

13.08.2015
  • тупой, я изменил его на длинный, и я все еще получаю эту ошибку. 13.08.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..