1

私は次のテクノロジを使用しています: WinForms、Entity Framework 4.4 (.NET 4.0 では 5.0)、DBContext

私は(私が思うに)非常に単純なマスター/詳細フォームを持っています.EF 4.0からEF 4.4にアップグレードする前は、実際にはうまく機能していました. ここで、何らかの理由で、Details DataGridView にデータが入力されません。

自動生成されたスキーマ コードは次のとおりです。

public partial class RoadMapping
{
    public RoadMapping()
    {
        this.RoadCharacteristics = new HashSet<RoadCharacteristic>();
    }

    public int RoadMappingID { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }

    public virtual ICollection<RoadCharacteristic> RoadCharacteristics { get; set; }
}

public partial class RoadCharacteristic
{
    public RoadCharacteristic()
    {
    }

    public int RoadCharacteristicID { get; set; }
    public int RoadMappingID { get; set; }
    public string Value { get; set; }
    public string Description { get; set; }

    public virtual RoadMapping RoadMapping { get; set; }
}

EF 4.0 で動作していた私のコードは次のとおりです。

SATContext = new SafetyAssessmentToolEntities();

dataGridViewMappings.DataSource = bindingSourceMappings;
dataGridViewDetails.DataSource = bindingSourceDetails;

bindingSourceMappings.DataSource = SATContext.RoadMappings;
bindingSourceDetails.DataSource = bindingSourceMappings;
bindingSourceDetails.DataMember = "RoadCharacteristics";

EF 4.4 で動作しないコードは次のとおりです。

SATContext = new SafetyAssessmentToolEntities();
SATContext.RoadMappings.Load();
SATContext.RoadCharacteristics.Load();

dataGridViewMappings.DataSource = bindingSourceMappings;
dataGridViewDetails.DataSource = bindingSourceDetails;

bindingSourceMappings.DataSource = SATContext.RoadMappings.Local.ToBindingList();
bindingSourceDetails.DataSource = bindingSourceMappings;
bindingSourceDetails.DataMember = "RoadCharacteristics";

bindingSourceMappingsbindingSourceDetailsはフォーム デザイナーによって宣言されていることに注意してください。

これを機能させるためのより高度でコード集約的な方法がたくさんあることは知っていますが、なぜこの非常に単純な方法が機能しなくなったのか理解できません。

助言がありますか?


public partial class SafetyAssessmentToolEntities : DbContext
{
    public SafetyAssessmentToolEntities()
        : base("name=SafetyAssessmentToolEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public DbSet<RoadCharacteristic> RoadCharacteristics { get; set; }
    public DbSet<RoadMapping> RoadMappings { get; set; }
}
4

0 に答える 0