想要映射一对一关系实体框架,但共享主键名称

时间:2014-02-26 08:22:28

标签: entity-framework entity-framework-5

我有两个表,一对一映射。但共享主键名称应该不同。

以下是表格

public class User
{

    public Guid Id { get; set; }
    public Guid LicenseGuid { get; set; }
    public string UserID { get; set; }
    public int Sequence { get; set; }
    public UserLogin UserLogin { get; set; }
}

共享主键其他表将是

public class UserLogin
{
    public Guid UserId { get; set; }
    public User User { get; set; }
}

现在如何使用Id创建共享主键 - > Entityframework 6中的UserId 我试过这个

builder.Entity<UserLogin>()
            .HasRequired(x => x.User).WithRequiredDependent();

但它不仅会创建UserId作为共享密钥,还会在User_id表上创建UserLogins,这是不受欢迎的。如何只有一个UserId作为共享主键,表User的主要共享密钥与表Id表上的UserIdUserLogin共享密钥相同。

1 个答案:

答案 0 :(得分:0)

我认为代码可以解决您的问题

 public class User{
        public Guid Id { get; set; }
        public Guid LicenseGuid { get; set; }
        public string UserID { get; set; }
        public int Sequence { get; set; }
        [ForeignKey("Id")]
        public UserLogin UserLogin { get; set; }
    }  




public class UserLogin
{
    public Guid UserId { get; set; }
    [ForeignKey("UserId ")]
    public User User { get; set; }
}  

但我认为你可以这样做

public class User{
        public Guid Id { get; set; }
        public Guid LicenseGuid { get; set; }
        public string UserID { get; set; }
        public int Sequence { get; set; }

    } 
public class UserLogin:User{
// other property
}