Entity framework 4 尝试在实体框架中插入实体时发生强制转换异常错误(首先使用代码)

Entity framework 4 尝试在实体框架中插入实体时发生强制转换异常错误(首先使用代码),entity-framework-4,ef-code-first,Entity Framework 4,Ef Code First,当我试图在实体框架中插入实体(首先使用代码)时,会出现强制转换异常 强制转换异常类似于“无法将…集合的1(实体)强制转换为类型(实体)” 根据该代码: public virtual T Insert(T entity) { return Context.Set<T>().Add(entity); } 映射 public class PostMap: EntityTypeConfiguration<Post> { public PostMap()

当我试图在实体框架中插入实体(首先使用代码)时,会出现强制转换异常

强制转换异常类似于“无法将…集合的1(实体)强制转换为类型(实体)”

根据该代码:

public virtual T Insert(T entity)
{
      return Context.Set<T>().Add(entity);
}
映射

public class PostMap: EntityTypeConfiguration<Post>
{
    public PostMap()
    {
        ToTable("Posts");
        HasKey(x => x.PostId);
        Property(x => x.Subject)
            .HasColumnType("varchar")
            .HasMaxLength(256)
            .IsRequired();
        Property(x => x.Body)
            .HasColumnType("text")
            .IsRequired();
        HasMany(x => x.Tags);
        HasOptional(x => x.Tags);
    }
}

class TagMap : EntityTypeConfiguration<Tag>
{
    public TagMap()
    {
        ToTable("Tags");
        HasKey(x => x.TagId);
        Property(x => x.Name)
            .HasColumnType("varchar")
            .HasMaxLength(256)
            .IsRequired();
        HasRequired(x => x.User);


}
    }
公共类邮戳:EntityTypeConfiguration
{
公共邮戳(
{
可转帐(“员额”);
HasKey(x=>x.PostId);
属性(x=>x.Subject)
.HasColumnType(“varchar”)
.HasMaxLength(256)
.IsRequired();
属性(x=>x.Body)
.HasColumnType(“文本”)
.IsRequired();
HasMany(x=>x.Tags);
has可选(x=>x.Tags);
}
}
类标记映射:EntityTypeConfiguration
{
公共标记映射()
{
ToTable(“标签”);
HasKey(x=>x.TagId);
属性(x=>x.Name)
.HasColumnType(“varchar”)
.HasMaxLength(256)
.IsRequired();
HasRequired(x=>x.User);
}
}

非常感谢。

请确保已将单个元素传递给Insert方法,而不是包含单个元素的集合

我找到了解决办法

以下是Post的正确映射场景:

public PostMap()
        {
            ToTable("Posts");
            HasKey(x => x.PostId);
            Property(x => x.Subject)
                .HasColumnType("varchar")
                .HasMaxLength(256)
                .IsRequired();
            Property(x => x.Body)
                .HasColumnType("text")
                .IsRequired();
            HasRequired(x => x.User);
            HasMany(x => x.Tags).WithOptional();
        }
重要的是指定标签集合是可选的。在这种情况下就是这样。一篇文章可以没有标签


有许多(x=>x.Tags)

我无法控制这一切。
public class PostMap: EntityTypeConfiguration<Post>
{
    public PostMap()
    {
        ToTable("Posts");
        HasKey(x => x.PostId);
        Property(x => x.Subject)
            .HasColumnType("varchar")
            .HasMaxLength(256)
            .IsRequired();
        Property(x => x.Body)
            .HasColumnType("text")
            .IsRequired();
        HasMany(x => x.Tags);
        HasOptional(x => x.Tags);
    }
}

class TagMap : EntityTypeConfiguration<Tag>
{
    public TagMap()
    {
        ToTable("Tags");
        HasKey(x => x.TagId);
        Property(x => x.Name)
            .HasColumnType("varchar")
            .HasMaxLength(256)
            .IsRequired();
        HasRequired(x => x.User);


}
    }
public PostMap()
        {
            ToTable("Posts");
            HasKey(x => x.PostId);
            Property(x => x.Subject)
                .HasColumnType("varchar")
                .HasMaxLength(256)
                .IsRequired();
            Property(x => x.Body)
                .HasColumnType("text")
                .IsRequired();
            HasRequired(x => x.User);
            HasMany(x => x.Tags).WithOptional();
        }