簡體   English   中英

使用現有數據庫時的EF 4.3代碼優先一對一關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM