[英]EF 4.3 Code First one-to-one relationship when using an existing database
我的數據庫中有兩個表,它們之間是一對一的關系。 我想使用代碼優先方法通過EF訪問它們。 我寫了這樣的POCO類:
public class User
{
public int Id { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public virtual Profile Profile { get; set; }
}
public class Profile
{
public int UserId { get; set; }
public string FullName { get; set; }
public DateTime? Birthday { get; set; }
public bool? Male { get; set; }
}
同時,我描述了類之間的關系在OnModelCreating作為解釋在這里 。 因此,外觀如下:
modelBuilder.Entity<Profile>().HasKey(x => x.UserId);
modelBuilder.Entity<User>().
HasOptional(u => u.Profile).
WithRequired();
但是,當我運行應用程序時,嘗試訪問User表時遇到了此異常:
無效的列名稱“ User_Id”
盡管當我讓EF單獨使用這兩個表創建新數據庫時,它創建的數據庫具有與我的數據庫相同的結構並且可以正常工作。
我使用的是EF 4.3(我也嘗試過4.2)和MS SQL2008。我在做什么錯? 我不敢相信這是實體框架的錯誤。
EF要求一對一的列都共享相同的主鍵,並且兩者之間必須有參考FK。
在這種情況下,您可以使用Entity Framework Power Tools CTP1對數據庫進行反向工程,使其成為Code First模型。
您可以在這里找到它: http : //visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d
謝謝大家的幫助。 我意識到,代碼優先不是我應該走的路,我選擇了數據庫優先的方法。 帶有用於實體框架的POCO模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.