Недопустимое имя объекта из LINQ-to-SQL

У меня есть база данных SQL Server, и я только что добавил новую таблицу:

CREATE TABLE [dbo].[my_table](
    [my_primary_key] [int] NOT NULL,
    [my_data_value] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [my_primary_key] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Я перетаскиваю новую таблицу из обозревателя баз данных в Visual Web Developer в окно дизайна my_schema.dbml. Это создает для меня файл my_schema.vb таким образом: -

Partial Class my_schemaDataContext

End Class

хотя некоторые следы таблицы действительно появляются в XML: -

<?xml version="1.0" encoding="utf-8"?><Database Name="my_schema" Class="my_schemaDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
  <Connection Mode="AppSettings" ConnectionString="Data Source=MYPC;Initial Catalog=my_schema;Integrated Security=True" SettingsObjectName="MyProgram.My.MySettings" SettingsPropertyName="my_schemaConnectionString" Provider="System.Data.SqlClient" />
  <Table Name="dbo.my_table" Member="my_tables">
    <Type Name="my_table">
      <Column Name="my_primary_key" Type="System.Int32" DbType="Int NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
      <Column Name="my_data_value" Type="System.Int32" DbType="Int" CanBeNull="true" />
    </Type>
  </Table>
</Database>

Затем я пытаюсь вставить строки в таблицу следующим образом:

Try
    db = New my_schemaDataContext("Integrated Security=SSPI; ")
    Dim new_row As my_table
    new_row = New my_table
    new_row.my_primary_key = 1
    new_row.my_data_value = 1
    db.my_tables.InsertOnSubmit(new_row)
    db.SubmitChanges()
Catch ex As Exception
    ' do something
End Try

Это приводит к исключению Invalid Object Name 'dbo.my_table.

Предположительно, мне нужно где-то втиснуть имя схемы, но я не понимаю, как это сделать. Я попытался добавить Initial Catalogue=my_schema; в строку подключения, но это привело к исключению Keyword Not Supported: Initial Catalogue.

Кто-нибудь знает, что еще я могу попробовать? (Должен отметить, что я также пробовал другие таблицы в той же схеме с теми же результатами, что, я надеюсь, устранит возможность случайных опечаток, вызывающих проблему.)


person Brian Hooper    schedule 19.04.2013    source источник


Ответы (2)


Похоже, строка подключения неверна. Также я считаю, что Catalogue следует писать как Catalog.

person chead23    schedule 19.04.2013
comment
Стон. Вот и все. Исправление Catalogue на Catalog исправляет это. Спасибо. - person Brian Hooper; 19.04.2013

Конструктор вашего DataContext принимает строку подключения.

"Integrated Security=SSPI; "

не выглядит для меня допустимой строкой подключения.

Если вы ничего не дадите, он примет строку подключения, установленную при создании. Вот это настройка my_schemaConnectionString. Так что просто сделайте:

db = New my_schemaDataContext()

Или, если вы хотите изменить его во время выполнения:

string connectionString = "whatever";
db = New my_schemaDataContext(connectionString)
person Cyril Gandon    schedule 19.04.2013
comment
это объяснит все о части Integrated Security= - person AceMark; 11.12.2014