我的数据库中有两个表,它们具有一对一的关系。我想使用代码优先方法通过 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_Id”无效
尽管当我让 EF 使用这两个表自己创建一个新数据库时,它会创建一个与我的结构相同的数据库并且它可以工作。
我使用的是 EF 4.3(我也尝试过 4.2)和 MS SQL 2008。我做错了什么?我不敢相信这是实体框架的错误。