我有一个用户模型

public class User {
    public Guid IdGuid {get;set;}
    public string Name {get;set;}
    public virtual List<User> Friends {get;set;}
}

我有第二个模特

public class UserFriendship{
    public Guid FriendShipIdGuid {get;set;}
    public Guid UserIdGuid {get;set;}
    public Guid FriendIdGuid {get;set;}
}

我在上下文中有FluentApi代码OnModelcreating

modelBuilder.Entity<User>().HasMany(u => u.Friends).WithMany().Map(c => {
    c.MapLeftKey("UserIdGuid"); 
    c.MapRightKey("FriendIdGuid");
    c.ToTable("UserFriendship");
    });

问题:我已经有一个UserFriendship类模型。 我想创建与用户之间的这种模型的关系。 我正在用FluentApi来做。

但FluentApi代码执行后, FriendShipIdGuid从去除UserFriendship表。

我需要创建一个为用户一对多的关系,并将其保存到表UserFriendship和地图,它已经与现有的类模型名UserFriendship dbset的哪个元素。 你能帮我吗 ?

总而言之,我已经有UserFriendship类。 此类包含FrientshipGuidId (键), UserIdGuidFriendIdGuid 我需要将User类一对多地映射到自身。 我想将此关系保存在UserFriendship类上。 我也想将Userfriendship用作dbset。

我有

public DbSet<UserFriendship> Friendships { get;set; }

就我而言。

我正在使用FluentApi ToTable函数创建一对多关系表。 但是FluentApi代码删除了FriendshipIdGuid字段。

===============>>#1 票数:0 已采纳

这是不可能的。 您不能在User类中使用List<UserFriendship> ,因为有时用户是用户,而有时用户是朋友,除非您在UserFriendship表中有如下重复项:

Friendship table:          |
----------------------------

User / Friend
-------------
  A  /   B
  B  /   A
-------------

首先,如下更改UserUserFriendship类:

class UserFriendship 
{
    public Guid FriendShipIdGuid {get;set;}
    public Guid UserIdGuid {get;set;}
    public Guid FriendIdGuid {get;set;}

    public User User {get;set;}
    public User Friend {get;set;}
}

class User 
{
    public Guid IdGuid {get;set;}
    public string Name {get;set;}

    // Only if you will allow duplicates in UserFriendship
    public virtual List<UserFriendship> Friendships {get;set;}
}

我不记得Fluent API的确切语法/方法,但是您会明白的:

modelBuilder.Entity<User>()
  .HasKey(u => u.IdGuid)
  .ToTable("User");

modelBuilder.Entity<UserFriendship>()
  .HasKey(uf => uf.FriendShipIdGuid)
  .ToTable("UserFriendship");

modelBuilder.Entity<UserFriendship>()
  .HasRequired(uf => uf.User)
  .WithMany(u => u.Friendships)       // Only if you allow duplicates
  //.WithMany()                         // Otherwise
  .HasForeignKey(uf => uf.UserIdGuid);

modelBuilder.Entity<UserFriendShip>()
   .HasRequired(uf => uf.Friend)
   .WithMany()
   .HasForeignKey(uf => uf.FriendIdGuid);

  ask by Ras translate from so

未解决问题?本站智能推荐: