0

我将 Code First 与 Entity Framework 5 一起使用。

我有User课,一个用户可以和很多人成为朋友。

public class User
{
    [Key]
    public Guid UserID { get; set; }
    public virtual ICollection<User> Friends { get; set; }
}

然而,这映射 0..1 对多。我应该如何在 Code First 中映射同一个类的多对多关系?

4

3 回答 3

1

添加配置类:

public class UserConfiguration : EntityTypeConfiguration<User>
{
    public UserConfiguration()
    {
        HasMany(u => u.Friends).WithMany();
    }
}

然后,这需要添加到上下文类

public class MyContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new UserConfiguration());
        base.OnModelCreating(modelBuilder);
    }
}
于 2013-10-15T12:50:44.080 回答
0
public class Organization : Entity
{
    public string Name { get; set; }

    public string Description { get; set; }

    public virtual Organization Parent { get; set; }

    public virtual ICollection<Organization> Children { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

public class OrganizationConfiguration : EntityMapperBase<Organization>
{
    public OrganizationConfiguration()
    {
        HasKey(f => f.Id);
        Property(f => f.Name).HasMaxLength(20).IsRequired();
        HasMany(f => f.Children).WithOptional(f => f.Parent).Map(m => m.MapKey("ParentId")).WillCascadeOnDelete(false);
        HasMany(f => f.Users).WithRequired(f => f.Organization).Map(m => m.MapKey("OrganizationId"));
    }
}

可以帮助你吗

于 2013-10-15T10:26:29.947 回答
-1

你应该有两个导航属性

public class User
{
    [Key]
    public Guid UserID { get; set; }
    public virtual ICollection<User> FriendsOfMine { get; set; }
    public virtual ICollection<User> FriendsWithMe { get; set; }
}
于 2013-10-15T10:25:27.480 回答