對於EF 6.1以上,當我在VS15添加/ 逆向工程的實體模型,模型/代碼生成 &的SQL服務器2k16數據庫我的實體缺少兩個編號,並自動增加數據註釋。 Saw this和this關於SO的問題,但沒有答案,只是它的一個錯誤,我正在尋找一個選項來生成PK Key,Auto Increment。EF數據庫第一代碼生成缺少密鑰和數據註解
問:我怎麼能保證,該ID鍵&自動遞增的選項被添加到實體代碼生成期間?除了外鍵以外,沒有數據註釋!我也可以讓EF生成複合鍵嗎?
我做什麼: 在數據庫中,我添加了設置主鍵上[Id]
山坳爲int
, 我還設置Identity true
,seed 1
,auto increment 1
例如丟失的主鍵
//E.g. Reverse Eng. Generated code from ASP table
public partial class AspNetUsers
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public AspNetUsers()
{
this.AspNetUserClaims = new HashSet<AspNetUserClaims>();
this.AspNetUserLogins = new HashSet<AspNetUserLogins>();
this.AspNetRoles = new HashSet<AspNetRoles>();
}
// Missing Primary Key
public string Id { get; set; }
public Nullable<int> IdNumber { get; set; } ...
例如2 缺少兩個主鍵&自動遞增
public partial class AuditNetEvent
{
//Reverse Generated code missing Primary Key & Auto Increment
public bigint Id { get; set; }
public System.DateTime InsertedDate { get; set; }
當我反向設計我的數據庫爲代碼第一類,它創建的POCO類,而註釋和模型類與上下文,dbsets和流利的代碼(OnModelCreating)來定義所有選定表的鍵,關係等。 –
@SteveGreene如果我理解正確,這是默認行爲,對嗎?我檢查了'DbMode.Context'它創建集合良好,但沒有鍵保護覆蓋無效OnModelCreating(DbModelBuilder modelBuilder) { {0}丟棄新的UnintentionalCodeFirstException(); }' - 我怎樣才能在那裏? – transformer
我調整了[代碼生成模板](https://www.nuget.org/packages/EntityFramework.CodeTemplates.CSharp/),如[這裏]所述(https://entityframework.codeplex.com/workitem/2241) 。 –