У меня есть следующий класс модели.Программа использует 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")]
не помогает?