我使用實體框架6代碼優先與現有數據庫,但有問題將我的實體映射到數據庫表。代碼優先:將實體映射到現有數據庫表
通常情況下,我會使用數據庫優先的方法,並生成我的實體和上下文代碼,但使用設計器已成爲一個巨大的痛苦。
我已經設置Database.SetInitializer(null),因爲我不想EF來更改我的模式。
數據庫模式:
代碼第一:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ReleaseControlContext : DbContext
{
public ReleaseControlContext()
: base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString)
{
Database.SetInitializer<ReleaseControlContext>(null);
}
public DbSet<Project> Projects { get; set; }
}
調用代碼:
using(var context = new ReleaseControlContext())
{
var projects = context.Projects.ToList();
}
以下異常被拋出:
SQLEXCEPTION:無效的對象名稱dbo.Projects「。
這是因爲我的數據庫表是項目而不是項目。我不想將我的上下文的DbSet<Project>
重命名爲「Project」,因爲這在語義上不正確。
問:
我必須用流利的API /數據註解的項目數據庫表和DbSet<Project> Projects
集之間進行映射?
我wonderung爲什麼它不工作的下面的方法被調用;該表必須被稱爲項目,這樣做會出錯,但正如您所說的,您可以使用數據註釋來強制名稱[Table(「Projects」)]。 –
嘗試在創建DBContext之前調用初始化程序;把它放在外面的某個地方。 –