首页 > 解决方案 > 由于未解决对对象的引用,程序无法正常工作

问题描述

我正在编写一个 WPF 应用程序,有时我试图通过如下过程向我的数据库添加新行:

CREATE PROCEDURE dbo.InsertStudent
    @IdStudent INT,
    @FirstName VARCHAR(50),
    @LastName VARCHAR(50),
    @Address VARCHAR(50),
    @IndexNumber VARCHAR(50),
    @IdStudies INT
AS
    SET NOCOUNT ON

    INSERT INTO [dbo].[apbd.Student]
           ([IdStudent]
           ,[FirstName]
           ,[LastName]
           ,[Address]
           ,[IndexNumber]
           ,[IdStudies])
    VALUES
           (@IdStudent
           ,@FirstName
           ,@LastName
           ,@Address
           ,@IndexNumber
           ,@IdStudies)

但是每当我要使用它时,我都会收到错误消息:

SQL71502:过程:[dbo].[InsertStudent] 对对象 [dbo].[apbd.Student] 有一个未解析的引用。

我一直在寻找解决方案,但我发现只是通过右键单击引用等来添加对数据库的引用,但我的解决方案资源管理器中没有这个选项。

也许我在错误的地方寻找它,但右键单击后我唯一的选择是这样的:

  1. 添加参考...
  2. 添加对服务的引用...
  3. 添加连接/连接/累积(或者无论如何应该翻译)服务
  4. 添加分析仪...
  5. 管理 NuGet 数据包...

至于在数据库中创建表的代码:

CREATE SCHEMA apbd;

GO

-- tables
-- Table: Student
CREATE TABLE apbd.Student (
    IdStudent int  NOT NULL IDENTITY,
    FirstName nvarchar(100)  NOT NULL,
    LastName nvarchar(100)  NOT NULL,
    Address nvarchar(100)  NOT NULL,
    IndexNumber nvarchar(50) NOT NULL,
    IdStudies int  NOT NULL,
    CONSTRAINT Student_pk PRIMARY KEY  (IdStudent)
);

-- Table: Student_Subject
CREATE TABLE apbd.Student_Subject (
    IdStudentSubject int  NOT NULL IDENTITY,
    IdStudent int  NOT NULL,
    IdSubject int  NOT NULL,
    CreatedAt datetime  NOT NULL,
    CONSTRAINT Student_Subject_pk PRIMARY KEY  (IdStudentSubject,IdStudent,IdSubject)
);

-- Table: Studies
CREATE TABLE apbd.Studies (
    IdStudies int  NOT NULL IDENTITY,
    Name nvarchar(100)  NOT NULL,
    CONSTRAINT Studies_pk PRIMARY KEY  (IdStudies)
);

-- Table: Subject
CREATE TABLE apbd.Subject (
    IdSubject int  NOT NULL IDENTITY,
    Name nvarchar(100)  NOT NULL,
    CONSTRAINT Subject_pk PRIMARY KEY  (IdSubject)
);

-- End of file.

标签: c#sql-serverwpfvisual-studio

解决方案


默认情况下,MS SQL Server 数据库只有一个模式 (dbo)。您可以出于安全或组织目的添加架构以对事物进行分组。

在您的情况下,创建了架构 apbd 并在该架构而不是 dbo 架构上创建了 Student。因此,要引用该表,您需要使用 [apbd].[Student]。


推荐阅读