0

我正在使用 ef5 codefirst 开发 mvc4 应用程序,但无法解决此错误:

元数据集合中不存在身份为“xxxx”的成员。

更新: 我看到我使用了两个不同的上下文(导航对象被称为通过创建不同 DbContext 的存储库),这可能是一个问题。我改变了它,但现在我得到一个新的错误:

列名“Brewery_BreweryId”无效。

在 IntelliTrace 中,我看到 ef 试图

select ..., Brewery_BreweryId from UserProfiles 

此列不存在也不应该存在,我想要多对多,而不是一对多。

我认为这与多对多关系有关。

这是我的代码示例

internal class BreweryConfiguration : EntityTypeConfiguration<Brewery>
{
    public BreweryConfiguration()
    {
      // PK
      HasKey(e => e.BreweryId);

      // FK
      HasMany(e => e.UserProfiles)
        .WithMany()
        .Map(m =>
        {
          m.MapLeftKey("BreweryId");
          m.MapRightKey("UserId");
          m.ToTable("BreweryUserProfiles");
        });

    namespace Project2.DAL.Entities
    {
      [Table("Breweries")]
      public class Brewery : ABrewery
      {
        public int BreweryId { get; set; }
        public ICollection<UserProfile> UserProfiles { get; set; }
      }
    }

    namespace Project1.DAL.Entities
    {
      [Table("UserProfiles")]
      public class UserProfile : IUserProfile
      {

        [Key]
        public int UserId { get; set; }
        ...
      }
}

连接表

4

1 回答 1

1
c.MapLeftKey("ClassB_ID");
c.MapRightKey("ClassA_ID");

应该

c.MapLeftKey("ClassA_ID");
c.MapRightKey("ClassB_ID");

编辑:

您还需要在配置中定义 ClassB 的 PK。在您实现的方式中,您可以为 ClassB 添加另一个派生配置。

于 2013-02-18T18:37:43.567 回答