首页 > 解决方案 > Ef core 从两个外键创建索引

问题描述

我想从两个外键创建一个索引。我的问题是因为密钥名称是由 Windows 生成的,所以表产品和表用户具有相同的 PrimaryKey 名称 Id

我有两个类,一类是产品类,一类是用户类

public class Product: EntityBase<Guid>
{
}

public class User : IdentityUser
{

}

builder.Entity<Rating>().HasIndex(r => new { r.User.Id, r.Product.Id }).HasName("IX_UserProductID").IsUnique(true);

因为具有相同的名称 Id 我收到以下错误。

一个匿名类型不能有多个同名的属性。

我怎样才能最好地解决这个问题。谢谢您的帮助

标签: c#asp.net.netentity-framework

解决方案


我通过这样做解决了它

首先在我的模型评级中,我添加了以下字段

    [ForeignKey("User")]
    public string UserId { get; set; }
    public User User { get; set; }
    [ForeignKey("Product")]
    public Guid ProductID { get; set; }
    public Product Product { get; set; }

在 MyDbCONtext 我添加了这个

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
         builder.Entity<Rating>().HasIndex(r => new { r.UserId, r.ProductID }).IsUnique(true);
    }

推荐阅读