1

我的数据库中有一个表(多对多表),两个类 A 和 B 像这样创建。

    this.HasMany(t => t.TrafficImageQuestions)
       .WithMany(t => t.TrafficImages)
        .Map(m =>
            {
                m.ToTable("TrafficImage_Answers");
                m.MapLeftKey("TrafficImagesGuid");
                m.MapRightKey("TrafficImageQuestionsId");


            });

现在我想将我的自定义类关联到同一张表“TrafficImage_Answers”,该类关闭原因有左右键,然后还有一个 3. 自定义属性。

(我确实将该列添加到数据库“答案”)

    public class TrafficImageAnswer
    {
        public System.Guid TrafficImageGuid { get; set; }
        public int TrafficImageQuestionId { get; set; }
        public byte Answer { get; set; }
    }

我这样做是因为我希望实体模型跟踪我的 A 和 B 的多对多关系,并且仍然能够查找数据库中的 3. 属性答案。

我试过的

我尝试执行以下操作:

    this.Property(t => t.TrafficImageQuestionId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    this.Property(t => t.TrafficImageGuid)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

    // Table & Column Mappings
    this.ToTable("TrafficImage_Answers");

但我知道该表已经存在,逻辑。我需要告诉它它应该使用该表而不是尝试创建它。(我在 EF 5 和包管理器中使用 DB 缓解来执行此操作)。

4

1 回答 1

0

这是不支持的。如果您想在联结表中为多对多关系添加其他字段,则不能再将其映射为多对多。每个表只能映射一次,但同时将表映射到实体和多对多关系会使其映射两次。

您必须更改您的TrafficImageQuestionsandTrafficImages以使用一对多关系TrafficImageAnswer而不是彼此之间的多对多关系。

于 2012-10-01T08:52:40.530 回答