2015-08-13 5 views
1

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

Column «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; } 
    } 
} 

и вот мой стол:

enter image description here

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

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"); 
     } 
    } 
} 
+0

Если я читаю ваш код правильно, FK в 'OpsUser' является' double', и PK в вашей таблице является «числовым (10,0)». Это, безусловно, не тот же тип данных, следовательно, ваша ошибка. –

+0

@MartinParkin, теперь я попробовал длинный, десятичный и int, и он тоже не работает. Нет числового типа в C# – djblois

ответ

1

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

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

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

+0

dumbknee, я изменил его на длинный, и я все еще получаю эту ошибку. – djblois

Смежные вопросы