我想通过外键在两个直接不相关的表之间创建关系。但是我没有成功。有人知道这在实体框架中是否可能以及如何解决?
型号
C#
class Commentary {
public int Id {get;set; }
public int UserId {get; set;}
public User User {get;set;}
public UserAccount UserAccount {get;set;}
}
class User {
public int Id {get;set; }
public int UserAccountId {get; set;}
public UserAccount UserAccount {get;set;}
}
class UserAccount {
public int Id { get; set; }
public ICollection<User> Users {get; set;}
}
// Relationship
modelBuilder.Entity<TarefaComentario>()
.HasOne(c => c.UserAccount)
.WithMany()
.HasForeignKey(c => c.User.UserAccountId) // this generates error
.HasPrincipalKey(ua => ua.Id);
1条答案
按热度按时间ddrv8njm1#
我相信你不能直接从Commentary调用UserAccount,Commentary和UserAccount之间没有直接的关系,你拥有的关系是Commentary-〉User-〉UserAccount。
因此,您必须使用
modelBuilder
两次,以创建两个关系。从Commentary
到User
,然后从User
到UserAccount
。你还必须将
public ICollection<Commentary> Commentaries {get; set;}
添加到User
类中。在Commentary
类中不需要UserAccount
。现在,如果你有一个
Commentary
对象,你可以像这样访问User
和UserAccount
:Commentary.User.UserAccount
。