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