EF Core 多对多关系组合键创建显示无效的属性表达式



我正在遵循msdn上的指南:https://learn.microsoft.com/en-us/ef/core/modeling/relationships#other-relationship-patterns

我需要多对多的相对论的两个类:

public class Initiative
{
public int InitiativeId { get; set; }
//other properties
}
public class AppUser : IdentityUser
{
//properties
}

我的加入类 :

public class UserVolunteer
{
public string userId;
public AppUser user;
public int initiativeId;
public Initiative initiative;
}

我流利的 api 代码:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserVolunteer>()
.HasKey(t => new { t.userId, t.initiativeId });
modelBuilder.Entity<UserVolunteer>()
.HasOne(bc => bc.user)
.WithMany(b => b.UserVolunteers)
.HasForeignKey(bc => bc.userId);
modelBuilder.Entity<UserVolunteer>()
.HasOne(bc => bc.initiative)
.WithMany(c => c.UserVolunteers)
.HasForeignKey(bc => bc.initiativeId);
}

初始化迁移时,出现以下错误:

属性表达式 't => new <>f__AnonymousType0'2(userId = t.userId, initiativeId = t.initiativeId(' 无效。表达式应表示属性访问:'t => t.MyProperty'。指定多个属性时,请使用匿名类型:'t => new { t.MyProperty1, t.MyProperty2 }'。 参数名称:属性访问表达式

我不明白有什么问题。我正在做与指南和错误相同的操作。

在类UserVolunteer中,userIdinitiativeId是一个公共领域,而不是一个属性。因此,它会在t => new { t.userId, t.initiativeId }上引发异常,因为它不是有效的属性访问。

public class UserVolunteer
{
public string userId { get; set; }
public AppUser user { get; set; }
public int initiativeId { get; set; }
public Initiative initiative { get; set; }
}

相关内容

最新更新