ef-code-first-one-to-many отношение с миграцией первичного ключа tinyint завершается неудачно - PullRequest
0 голосов
/ 08 января 2019

Я использую Entity Framework Code-First, и я новичок в этом. Вот мои модели:

public class Tbl_Organization_Type
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public byte fld_organization_type_id { get; set; }

    [MaxLength(100)]
    public string fld_organization_type_name { get; set; }

    public byte? fld_sort { get; set; }

    public ICollection<Tbl_Organization> Tbl_Organization { get; set; }

}



public class Tbl_Organization
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long fld_organization_id { get; set; }
    public long? fld_organization_parent_id_ref { get; set; }

    [StringLength(500)]
    public string fld_organization_name { get; set; }

    [StringLength(200)]
    public string fld_organization_address { get; set; }

    [ForeignKey("fld_location_id_ref")]
    public Tbl_Personnel_Location Tbl_Personnel_Location { get; set; }

    [ForeignKey("fld_organization_type_id_ref")]
    public Tbl_Organization_Type Tbl_Organization_Type { get; set; }
}

Когда я добавляю ( add-migration personnel_1 -context PersonnelDbContext) это дает мне ошибку ниже:

Отношение 'Tbl_Organization.fld_organization_type_id' к 'Tbl_Organization_Type.Tbl_Organization' со свойствами внешнего ключа {'fld_organization_type_id_ref': Nullable} не может быть нацелен на первичный ключ {'fld_organization_type_id': byte}, потому что это не совместимы.

Настройка основного ключа или набора совместимых внешних ключевые свойства для этого отношения.

1 Ответ

0 голосов
/ 08 января 2019

Это не похоже на правильную модель (fld_organization_type_id_ref не отображается или опечатка). IAC, это поле должно быть того же типа, что и первичный ключ для Tbl_Organization_Type (byte). Попробуйте:

public class Tbl_Organization
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long fld_organization_id { get; set; }
    public byte? fld_organization_type_id_ref { get; set; }  // This FK needs to match referenced PK type 
    // Are you missing or not showing fld_location_id_ref

    [StringLength(500)]
    public string fld_organization_name { get; set; }

    [StringLength(200)]
    public string fld_organization_address { get; set; }

    [ForeignKey("fld_location_id_ref")]
    public Tbl_Personnel_Location Tbl_Personnel_Location { get; set; }

    [ForeignKey("fld_organization_type_id_ref")]
    public Tbl_Organization_Type Tbl_Organization_Type { get; set; }
}

Аналогично, вам нужно показать / определить поле fld_location_id_ref и сопоставить тип со справочной таблицей Tbl_Personnel_Location.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...