Рассмотрим простой платформы микроблогов с моделью данных определяется следующим образом:Как установить имя столбца пользовательского ссылочного столбца в EF6 с кодовым кодом?
[Table("users")]
public class User
{
[Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Column("name"), MaxLength(45), Index(IsUnique = true)]
public string Name { get; set; }
[Column("password"), MaxLength(45)]
public string Password { get; set; }
public virtual ICollection<Message> Messages { get; set; }
}
[Table("messages")]
public class Message
{
[Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Column("text"), MaxLength(512)]
public string Text { get; set; }
[Column("author")]
public virtual User Author { get; set; }
}
Когда я проектировали это база данных SQL (DDL) первый способ, я включил messages.author
ссылки users.id
в качестве внешнего ключа. Мне нравится это так: аккуратно и объяснительно.
Когда я попробовал код-первый способ, однако, я обнаружил, что он называет ключевой столбец внешнего messages.User_Id
, а не messages.author
несмотря на то, я указал атрибут [Column("author")]
явно.
Как можно поправить это поведение?
Я бы согласился назвать его просто .user
(вместо моей первоначальной .author
идеи), чтобы сделать ссылку более очевидной, если это необходимо, но, конечно, не .User_Id
- я совершенно не нравится, когда это очевидно, излишние и некрасиво _Id
добавляемые к ключу колонны.
Я использую базу данных SQLite с библиотекой SQLiteCodeFirst и не уверен, является ли это нормальным поведением Entity Framework или просто ошибкой в этой конкретной библиотеке.