Как отключить добавление имени базы данных в LINQ to SQL - PullRequest
1 голос
/ 02 марта 2011

Проблема в том, что я использую несколько одинаковых баз данных с разными именами.Я бы хотел, чтобы дизайнер ConnectionDBContext не добавлял имя базы данных к имени функции.Например,

[Function(Name=@"**project.**DeletePlnAttributeSelectableValue", IsComposable=true)]

, где «проект» - это имя базы данных.Вы знаете, как это сделать?

Заранее спасибо.Paweł

1 Ответ

2 голосов
/ 02 марта 2011

Имя базы данных не с префиксом; это схема (исторически: владелец, но немного более сложный) объекта. Он не будет работать без схемы, , особенно для UDF, где он является обязательной частью синтаксиса вызова в TSQL.

Под этим я подразумеваю:

select * from DeletePlnAttributeSelectableValue(...)

is not valid TSQL; он должен включать схему, например:

select * from dbo.DeletePlnAttributeSelectableValue(...)

База данных будет до этой; Наименование объекта из нескольких частей:

[[[server].][[database].][schema].]object

, поэтому foo - это объект с именем foo, а somedb..foo равен foo в базе данных somedb.

I подозреваю проблема здесь в том, что вы выбрали "схему по умолчанию" для базы данных для каждой базы данных, что является плохим дизайном, IMO.

Контекст данных LINQ прекрасно работает с любой базой данных с соответствующими объектами - вы просто предоставляете строку соединения (или соединение) во время выполнения через конструктор.

...