【问题标题】:Adventure Works Access Customer InformationAdventure Works 访问客户信息
【发布时间】:2016-03-19 12:08:42
【问题描述】:

我正在使用 AdventureWorks 数据库做一个项目,我正在尝试访问该数据库,以便用户可以更改他们的帐户信息。该网站的用户是使用 ASP.NET 配置管理器设置的,所以我不确定如何去做。我设置了一个 GetCustomer Select 方法来获取(此时) Person.Contact 表中客户的名字和姓氏。

[DataObject(true)]
public static class CustomerDB
{
    [DataObjectMethod(DataObjectMethodType.Select)]
    public static List<Customer> GetCustomer()
    {
    List<Customer> CustomerList = new List<Customer>();
    SqlConnection con = new SqlConnection(GetConnectionString());


    string sel = "SELECT Person.Contact.FirstName, Person.Contact.LastName " + 
    "FROM Person.Contact " +
    "JOIN Sales.Individual ON Person.Contact.ContactID = Sales.Individual.ContactID " + 
    "JOIN Sales.Customer ON Sales.Individual.CustomerID = Sales.Customer.CustomerID " +
    "WHERE Sales.Customer.CustomerType = Sales.Individual " +
    "ORDER BY Person.Contact.LastName, Person.Contact.FirstName";

    SqlCommand cmd = new SqlCommand(sel, con);
    con.Open();
    SqlDataReader rdr =
    cmd.ExecuteReader(CommandBehavior.CloseConnection);
    Customer customer;
    while (rdr.Read())
    {
        customer = new Customer();
        customer.FirstName = rdr["FirstName"].ToString();
        customer.LastName = rdr["FirstName"].ToString();
        CustomerList.Add(customer);
    }
    rdr.Close();
    return CustomerList;
}
private static string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings
    ["AdventureWorksString"].ConnectionString;
}

但我收到错误消息: “无效的对象名称‘Person.Contact’。”这让我觉得问题出在查询上。我使用的查询基于 Msdn 网站上的示例场景之一。 如果有人能指出我使用哪些表格来获取客户信息的正确方向,以便用户能够更改他们的地址和密码,我将非常感激!

【问题讨论】:

  • 我刚刚恢复了 AdventureWorks 数据库的备份。它没有Person.Contact 表! Sales.Individual 也不见了
  • 检查你的数据库是否有Person.ContactSales.Individual表。
  • 好吧,那肯定会引起一些问题。我必须寻找正确的表格。
  • 我想知道,使用配置管理器创建的用户信息是存储在该数据库中还是存储在 asp.net 创建的另一个数据库中?

标签: c# asp.net sql-server-2008 configurationmanager


【解决方案1】:

我通过以下步骤找到了 Person.Contact 和 Sales.Individual 表。希望这会有所帮助。

  1. https://archive.codeplex.com/?p=msftdbprodsamples 下载 MSFTDBProdSamples.zip。

  2. 解压缩此子文件夹 \sourceCode\sourceCode.zip\Katmai_October2009_Refresh3\AdventureWorks OLTP。

  3. 在 SQLCMD 模式下从 SQL Server Management Studio 打开 instawdb.sql。

  4. 确保相应地更改这些行。

:setvar SqlSamplesDatabasePath "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\"

:setvar SqlSamplesSourceDataPath "C:\Temp\" -- 在此处复制 AdventureWorks OLTP 子文件夹

  1. 点击执行。

【讨论】:

    【解决方案2】:

    请检查 AdventureWorks 数据库中的表 Person.ContactSales.Individual 是否存在。由于此错误Invalid object name 'Person.Contact' 将在表或同样从数据库中丢失时发生。

    我刚刚恢复了AdventureWorks 数据库的备份。它没有Person.Contact 表! Sales.Individual 也不见了

    【讨论】:

      【解决方案3】:

      这可能对你有用。

      string sel = "SELECT pc.FirstName, pc.LastName " + 
          "FROM Person.Contact pc " +
          "JOIN Sales.Individual ON pc.ContactID = Sales.Individual.ContactID " + 
          "JOIN Sales.Customer ON Sales.Individual.CustomerID = Sales.Customer.CustomerID " +
          "WHERE Sales.Customer.CustomerType = Sales.Individual " +
          "ORDER BY pc.LastName, pc.FirstName";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多