{"Неверное имя столбца 'SessionStatus_Id'."}.Столбец `Id 'получил префикс с именем таблицы? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий класс модели.Программа использует EF V6.2.0

public partial class SessionStatus
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public SessionStatus()
    {
        Sessions = new HashSet<Session>();
    }

    [Key]
    [Column("Id", TypeName ="TinyInt")] // No effect
    public byte Id { get; set; } // Becomes SessionStatus_Id for DB operations

    [Required]
    [StringLength(10)]
    public string Status { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Session> Sessions { get; set; }
}

И Session класс

public partial class Session
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Session()
    {
        SessionMessages = new HashSet<SessionMessage>();
    }

    [Key]
    public Guid Uid { get; set; }

    // ......

    public virtual SessionStatus SessionStatus { get; set; }
}

И следующий код

        using (var ctx = new ProcessContext())
        {
            ctx.Sessions.Add(new Session { Uid = guid, //...... });
            ctx.SaveChanges();
        }

получил ошибку

{"Неверное имя столбца 'SessionStatus_Id'."}

Таблица базы данных SessionStatus имеет имя столбца Id вместо SessionStatus_Id (Столбец таблицы SessionStatus_Id не существует).Почему EF добавляет префикс имени столбца к имени таблицы?Даже атрибут [Column("Id", TypeName ="TinyInt")] не помогает?

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте временно изменить имя вместо Id, и вы получите ответ ...

...