9

問題があり、何が問題を引き起こしているのか理解できません。

'journals'テーブルhttp://puu.sh/1iRItを含むredmineデータベースがあります。Visual Studio2012プラグインEntityFrameworkPowerToolsを使用して、これは次のクラスにリバースエンジニアリングされています。

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を使用してジャーナルデータベースで選択を実行しようとすると、次のようになります。

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を引き起こしていることです(内部例外:{"不明な列'Extent1.Issue_id' in'フィールドリスト'"})

Issue_id列を手動で追加すると、この問題は修正されます(この修正を元に戻す必要があり、データベース構造に変更を加える必要はありません)

この「Issue_id」がどこから来たのかわかりませんが、これを見つける方法を誰かが知っていますか?

乾杯、リック

4

1 に答える 1

4

JournalとIssue間のカスタム参照を削除しました(Issueクラスにジャーナルのリストを追加しました)

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

このリストを削除した後、EntityFrameworkはクエリを再度正しく理解できます。

于 2012-10-29T07:51:41.463 に答える