LINQ to SQL: нужны разные имена пользователей для Prod и Dev DBML на табличном атрибуте - PullRequest
1 голос
/ 29 января 2010

Это похоже на этот вопрос

Когда я развернул свое dev-приложение на prod-сервере, я получил сообщение об ошибке:

System.Data.SqlClient.SqlException: недопустимое имя объекта 'dbo.Login'.

Атрибут таблицы в сопоставлении linq выглядит как [Table (Name = " dbo .Login")]

Когда я загрузил схему prod db в обозреватель серверов vs2008 и полностью обновил этот dbml, приложение на prod работает, но теперь приложение на dev не работает.

Атрибут таблицы в отображении linq теперь выглядит как [Table (Name = " prodDbUsername .Login")]

На сервере dev теперь я получаю

System.Data.SqlClient.SqlException: недопустимое имя объекта «prodDbUsername.Login».

Каков наилучший способ управления этими разными пользовательскими префиксами между dev и prod?

Ответы [ 2 ]

2 голосов
/ 29 января 2010

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

РЕДАКТИРОВАТЬ: С вашим дальнейшим разъяснением таблицы создаются либо с другим владельцем, либо с другой схемой. См. http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-schemas-in-sql-server для дальнейшего разъяснения разницы.

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

CREATE TABLE [dbo].[MY_TABLE_NAME]...
1 голос
/ 30 января 2010

Если вы используете одну схему (т. Е. Не несколько схем в одном БД), вы можете просто удалить префикс схемы в ваших таблицах.

например. изменить:

<Table Name="dbo.person" Member="Persons">

Кому:

<Table Name="person" Member="Persons">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...