考慮一個簡單的微博平臺被定義爲數據模型如下:如何在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庫,我不確定這是否是正常的實體框架行爲或只是在這個特定的庫中的錯誤。