EntityFramework尝试选择一个不存在的列?

9

我遇到了一个问题,但是我无法找出问题的原因。

我有一个Redmine数据库,其中包含一个名为“journals”的表格http://puu.sh/1iRIt。 使用Visual Studio 2012插件EntityFramework Power Tools,将其反向工程化为以下类:

public class Journal
    {
        public int id { get; set; }
        public int journalized_id { get; set; }
        public string journalized_type { get; set; }
        public int user_id { get; set; }
        public string notes { get; set; }
        public System.DateTime created_on { get; set; }
    }

以及地图:

public class JournalMap : EntityTypeConfiguration<Journal>
    {
        public JournalMap()
        {
            // Primary Key
            this.HasKey(t => t.id);

            // Properties
            this.Property(t => t.journalized_type)
                .IsRequired()
                .HasMaxLength(30);

            this.Property(t => t.notes)
                .HasMaxLength(65535);

            // Table & Column Mappings
            this.ToTable("journals", "redmine");
            this.Property(t => t.id).HasColumnName("id");
            this.Property(t => t.journalized_id).HasColumnName("journalized_id");
            this.Property(t => t.journalized_type).HasColumnName("journalized_type");
            this.Property(t => t.user_id).HasColumnName("user_id");
            this.Property(t => t.notes).HasColumnName("notes");
            this.Property(t => t.created_on).HasColumnName("created_on");
        }
    }

现在当我尝试使用LINQ对日志数据库执行select操作时:
return context.Journals.Where(c => c.journalized_id == task.id);

I see that the following query is created:

-       returnValue {SELECT
`Extent1`.`id`, 
`Extent1`.`journalized_id`, 
`Extent1`.`journalized_type`, 
`Extent1`.`user_id`, 
`Extent1`.`notes`, 
`Extent1`.`created_on`, 
`Extent1`.`Issue_id`
FROM `journals` AS `Extent1`
 WHERE `Extent1`.`journalized_id` = @p__linq__0}    


 System.Linq.IQueryable<Synchronisation.Domain.Entities.Redmine.Journal> {System.Data.Entity.Infrastructure.DbQuery<Synchronisation.Domain.Entities.Redmine.Journal>}

我不明白"Issue_id"是从哪里来的。这个查询会导致一个EntityCommandExecutionException (内部异常: {"Unknown column 'Extent1.Issue_id' in 'field list'"} )。
当我手动添加"Issue_id"列时,这个问题就被解决了(这个修复必须被恢复,不应该对数据库结构进行任何更改)。
我不知道这个"Issue_id"从哪里来,有没有人知道如何找出它的来源?
谢谢, Rick

尝试在XML中编辑您的Edmx模型,并搜索“Issue_Id”,您的模型中是否有任何内容? - Ryan Amies
是的,但是并不在实体集、实体类型或实体类型映射中。而且日志表和其他表之间也没有定义关系。 - Wubinator
1
你是否已经添加了期刊和问题之间的引用,而这些引用并非由工具自动生成的? - Arthur Vickers
啊,是的,我已经这么做了 :) 我会删除那个引用。 - Wubinator
1个回答

4

删除了期刊和问题之间的自定义引用(我已经在我的问题类中添加了一列期刊)

public List<Journal> Journals { get; set; }

移除这个列表后,EntityFramework 又能够正确地解析查询了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接