我正在使用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; }
...
}
}
答案 0 :(得分:1)
c.MapLeftKey("ClassB_ID");
c.MapRightKey("ClassA_ID");
应该是
c.MapLeftKey("ClassA_ID");
c.MapRightKey("ClassB_ID");
编辑:
您还需要在配置中定义ClassB的PK。在您实现的方式中,您可以为ClassB添加另一个派生配置。