c# - 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 我收到以下错误。
一个匿名类型不能有多个同名的属性。
我怎样才能最好地解决这个问题。谢谢您的帮助
解决方案
我通过这样做解决了它
首先在我的模型评级中,我添加了以下字段
[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);
}