C# 我的外键数据类型不匹配

C# 我的外键数据类型不匹配,c#,sql-server,entity-framework,entity-framework-migrations,C#,Sql Server,Entity Framework,Entity Framework Migrations,我使用的是实体代码优先迁移,它一直在告诉我 列“dbo.Users.u_user_id”与引用的数据类型不同 外键中的列“PTEInteractiveCourses.ModifyUserId” “FK_dbo.PTEInteractiveCourses_dbo.Users_ModifyUserId”。不能 创建约束。请参阅前面的错误 在创建迁移后尝试更新数据库时。以下是互动课程: namespace PTEManager.Domain { public class PTEInteract

我使用的是实体代码优先迁移,它一直在告诉我

列“dbo.Users.u_user_id”与引用的数据类型不同 外键中的列“PTEInteractiveCourses.ModifyUserId” “FK_dbo.PTEInteractiveCourses_dbo.Users_ModifyUserId”。不能 创建约束。请参阅前面的错误

在创建迁移后尝试更新数据库时。以下是互动课程:

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");
        }
    }
}
namespace PTEManager.Domain.Mapping
{
类UserMap:EntityTypeConfiguration
{
公共用户映射()
{
//主键
this.HasKey(t=>t.u\u用户id);
//性质
this.Property(t=>t.DepartmentID);
this.Property(t=>t.email\u addr)
.IsRequired()
.HasMaxLength(50);
this.Property(t=>t.first\u nme)
.IsRequired()
.HasMaxLength(30);
this.Property(t=>t.last\u nme)
.IsRequired()
.HasMaxLength(30);
this.Property(t=>t.msrepl\u tran\u版本)
.IsRequired();
this.Property(t=>t.status)
.IsRequired()
.HasMaxLength(1);
this.Property(t=>t.user\u nme)
.IsRequired()
.HasMaxLength(15);
this.Property(t=>t.u\u分支\u id)
.IsRequired();
//表和列映射
本表为ToTable(“用户”);
this.Property(t=>t.u_user_id).HasColumnName(“u_user_id”);
this.Property(t=>t.DepartmentID).HasColumnName(“DepartmentID”);
this.Property(t=>t.email\u addr).HasColumnName(“email\u addr”);
this.Property(t=>t.first\u nme).HasColumnName(“first\u nme”);
this.Property(t=>t.last\u nme).HasColumnName(“last\u nme”);
this.Property(t=>t.msrepl_tran_version).HasColumnName(“msrepl_tran_version”);
this.Property(t=>t.status).HasColumnName(“status”);
this.Property(t=>t.user\u nme).HasColumnName(“user\u nme”);
this.Property(t=>t.u_branch_id).HasColumnName(“u_branch_id”);
}
}
}

根据Martin Parkin的说法,您的实体和数据库之间的数据类型不匹配。我还建议在大多数情况下不要将
double
用作PK或FK。实际上,您希望它是一个整数或长整数

数字(10,0)=整数


numeric(19,0)=long

如果我正确读取了您的代码,则
OpsUser
中的FK是
double
,表中的PK是
numeric(10,0)
。这些绝对不是相同的数据类型,因此您的错误。@MartinParkin,我现在尝试了长、十进制和int,但它也不起作用。C#dumbknee中没有数字类型,我将其改为long,但仍然会出现此错误。