哪些数据是Product.cs中的data.ToList()引用了AdventureWorks项目?

时间:2013-01-04 03:06:57

标签: c# asp.net visual-studio-2010

我有一个项目 - 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();

所以,我使用trycatch来捕获异常并使用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>

以下显示了项目结构的一部分:

+ DataAccessLayer
  - Products.cs
+ Styles
  - Site.css
+ Default.aspx
  - Default.aspx.cs
  - Default.aspx.designer.cs
+ mdlAdventureWorks.edmx
  - mdlAdventureWorks.Designer.cs

我怀疑它可能与mdlAdventureWorks.edmx文件有关,但我不知道如何进一步排除故障并诊断问题,因为项目不是由我编写的。

感谢任何建议。

1 个答案:

答案 0 :(得分: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();
    }