我希望这将是相当直截了当的,但我没有太多的运气。我正在使用的数据库有一个用于用户的表和一个用于令牌的表,它们以 1 对 1 的关系相互关联,据我所知,令牌是principal。
public class Token
{
public int ID { get; set; }
public string Location { get; set; }
public virtual User Contact { get; set; }
}
public class User
{
public int ID { get; set; }
public int TokenID { get; set; }
public string Name { get; set; }
public virtual Token Token { get; set; }
}
因此,每个用户都有一个仅属于该用户的关联令牌,还有其他与其他对象相关的令牌,我也将以类似的方式映射这些令牌。
到目前为止,我已经尝试了以下以及一些变体,但它没有按预期工作,我不断为用户获取不正确的位置,因为它似乎使用 User.ID 映射到 Token.ID 而不是使用 User.TokenID。
modelBuilder.Entity<User>()
.HasRequired(p => p.Token)
.WithOptional(p => p.Contact);
我在想我实际上错过了指定用于映射的列?我只是不确定从这里去哪里。
编辑以前在映射使用 WithRequired() 扩展方法的关系时,我可以在之后指定 HasForeignKey() 但 WithOptional() 似乎没有此功能。