我最近更新了一個ASP.NET 5項目以使用ASP.NET Core(RC2)和實體框架核心。到目前爲止,除了小小的細微差別之外,所有事情都還好,但是我嘗試更改其中一個表的名稱後,發現我的遷移嘗試引用不正確的表(即「MyProject.Models.Blog」而不只是「博客」)。實體框架核心:表名被映射爲包含命名空間
我一直在瀏覽一些文檔,並嘗試了一些東西,比如使用數據註釋。我的模型,建立一個類似它們是如何出現文檔中(使用不同的命名/數據具體到我的項目,但同樣的想法):
public class MyContext : DbContext
{
public DbSet<Blog> Blog { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
builder.Entity<Blog>();
builder.Entity<Post>();
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
所以,當我做出改變,去創建一個新的遷移,並查看生成的遷移文件,我可以看到migrationBuilder現在正試圖對「MyProject.Models.Post」表進行更改,而不是之前使用的「Post」表。在更新到Core之前,我做了一些遷移,並且自更新以來沒有更改我的模型,所以這是新行爲。
編輯:我應該注意到我目前在我的模型上使用了「[Table(」Post「)]」數據註釋,但它也沒有幫助解決問題。
編輯2:這裏是我的移民文件內容的鏈接(有名字改了) - http://pastebin.com/CZmXTBEM
感謝您的回覆。我不知道如何附加一個文件,所以這裏是一個鏈接到內容 - http://pastebin.com/CZmXTBEM。我將一些名稱替換爲「Blog」和「Post」。 – Blake
謝謝,但爲什麼'我將一些名稱替換爲「Blog」和「Post」。我想看到所有的遷移文件(沒有以任何方式修改)... –
但沒有足夠的信息來解決這個問題,但是...您可以嘗試刪除所有遷移(首先進行備份),然後創建新的(乾淨的)遷移在RC2上。 –