首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过早地调用DbExtensions.Load ends方法

过早地调用DbExtensions.Load ends方法
EN

Stack Overflow用户
提问于 2013-01-15 18:52:55
回答 1查看 321关注 0票数 1

我在WinForms中使用实体框架5.0,我只是简单地遵循MSDN实体框架网站上的用WinForms建立数据库教程。我将分类类更改为有一个SortId,以便存储排序顺序:

代码语言:javascript
复制
public class Category
{
    private readonly ObservableListSource<Product> _products =
            new ObservableListSource<Product>();

    public Category(int pSortId = 0)
    {
        Name = "New Category";
        SortId = pSortId;
    }

    public int CategoryId { get; set; }
    public string Name { get; set; }
    public int SortId { get; set; }
    public virtual ObservableListSource<Product> Products { get { return _products; } }
}

但是,在添加SortId之后,应用程序将停止显示DataGridView中的类别。通过逐步遍历调试器并在OnLoad方法中添加调试语句,我发现当调用_context.Categories.Load()时,该方法会过早停止执行,这意味着从未为categoryBindingSource分配数据源。

_context.Categories.Load()在这里被调用(与上面提到的本教程中完全一样)

代码语言:javascript
复制
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        _context = new ProductContext();
        _context.Categories.Load();
        this.categoryBindingSource.DataSource =
            _context.Categories.Local.ToBindingList();
    }

问题:有人知道为什么加载方法会这样做吗?(是DbExtensions.Load)

如果需要,ProductContext类(也未从教程中修改)是:

代码语言:javascript
复制
    public class ProductContext : DbContext
    {
        public DbSet<Category> Categories { get; set; }
        public DbSet<Product> Products { get; set; }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-16 18:08:16

这是我的解决方案,我不会把它标记为答案,因为如果有人能更详细地解释幕后发生的事情,这会更有帮助。

简而言之,我告诉Visual中断任何异常(调试>异常>检查抛出下的所有内容),并在外部代码中找到一个InvalidOperationException,它的消息是“类'EFWinForms.Category‘没有无参数的构造函数”。

使用此通知,我将分类类的构造函数拆分为:

代码语言:javascript
复制
public Category() : this(0) { }

public Category(int pSortId)
{
    Name = "New Category";
    SortId = pSortId;
}

我的假设是,DbExtensions.Load方法捕获了这个异常,并终止了线程,这看起来很奇怪,但我无法证明它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14344818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档