0

II 有一个项目 - AdventureWorks 和一个文件 - Product.cs,其中包含以下代码:

    public static List<ProductCategory>  GetCategories()
    {
        var db = new AdventureWorksEntities();
        var data = from o in db.ProductCategories orderby o.Name select o;
        return data.ToList();

     }

EntityException was unhandled by user code遇到以下代码行时抛出异常

        return data.ToList();

所以,我使用tryandcatch来捕获异常并使用Console.WriteLine来查看异常是什么,它会给我

A first chance exception of type 'System.Data.EntityException' occurred in System.Data.Entity.dll

并且列表框将为空。

在 Default.aspx.cs 文件中,它包含:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            List<ProductCategory> data = DataAccessLayer.Products.GetCategories();

            lbCategories.DataSource = data;
            lbCategories.DataBind();
        }
        else
        {
            if (lbCategories.SelectedIndex != -1)
            {
                string category = lbCategories.SelectedValue;
                Response.Redirect("/Products.aspx?id=" + category);
            }

        }
    }

它似乎会从 DataAccessLayer 中检索某种形式的数据/信息。

以下是 Web.config 文件的摘录:

<connectionStrings>
  <add name="AdventureWorksEntities" connectionString="metadata=res://*/mdlAdventureWorks.csdl|res://*/mdlAdventureWorks.ssdl|res://*/mdlAdventureWorks.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\sqlexpress;Initial Catalog=AdventureWorksLT2008R2;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

下面展示了部分项目结构:

+ 数据访问层
  - 产品.cs
+ 风格
  - 网站.css
+ 默认.aspx
  - 默认.aspx.cs
  - Default.aspx.designer.cs
+ mdlAdventureWorks.edmx
  - mdlAdventureWorks.Designer.cs

我怀疑它可能与 mdlAdventureWorks.edmx 文件有关,但我不知道如何进一步解决和诊断问题,因为该项目不是我编写的。

感谢提供的任何建议。

4

1 回答 1

0

试试这个看看你是否真的从你的数据库中得到任何东西:

    public static List<ProductCategory> GetCategories()
    {
        var db = new AdventureWorksEntities();
        try
        {
            if (!db.ProductCategories.Any())
            {
                Console.WriteLine("Nothing in DB for ProductCategories");
            }
        }
        catch (Exception ex)
        {
           Console.WriteLine(ex.ToString());
        }

        var data = from o in db.ProductCategories orderby o.Name select o;
        return data.ToList();
    }
于 2013-01-04T03:20:23.640 回答