2010-06-18 4 views
1

Можно ли переопределить набор атрибутов на частичном классе?Атрибут переопределения в частичном классе (DBML)

Так что я один автоматически генерируемый частичный класс, как это:

[Table(Name="dbo.Users")] 
public partial class MbsUser : INotifyPropertyChanging, INotifyPropertyChanged 
{ 

Это генерируется в моей DBML. Проблема в том, что я не хочу, чтобы мой класс использовал эту таблицу. Я создал представление под названием «dbo.ActiveUsers» и хотел бы, чтобы это использовалось вместо этого (чтобы отключить отключенных пользователей).

Я попытался создать еще один частичный класс с тем же атрибутом следующим образом:

[Table(Name = "dbo.MbsUsersActive")] 
public partial class MbsUser : IEquatable<MbsUser> 
{ 

Но я получаю ошибку:

Duplicate 'Table' attribute 

ответ

1

Вы получаете эту ошибку, потому что атрибут может контролировать, есть ли являются одним или несколькими значениями этого атрибута в объявлении [AttributeUsage], и ​​он объявляет только один. Нет, это не сработает, к сожалению ...

Почему бы вам не изменить отображение в дизайнере, чтобы указать на новый объект? Не знаю, будет ли это работать одинаково, но стоит попробовать.

+0

Да, это то, что я сделал сейчас. (Большое спасибо за быстрый ответ кстати). Он работает, если я меняю его в дизайнере, но если DBML будет сгенерирован снова, я потеряю это изменение и получаю всех пользователей, а не только активных пользователей. Любые идеи, как я мог бы это сделать? Еще раз спасибо! –

+0

Вы имеете в виду, что он не сохраняет ваши изменения, или вы говорите, как бороться, если вам нужно удалить модель и воссоздать ее? У меня не было проблем с первым, и последнее всегда вызывает беспокойство; попробуйте не удалять всю модель, а только обновлять таблицы, которые вам нужны (можно легко найти таблицу, используя окно свойств). Если вам нужно изменить эту таблицу, внесите изменения вручную (добавьте столбец, добавьте в данные сопоставления). –

+0

Последний. Если в будущем DBML будет воссоздан другим разработчиком, представление не будет использоваться, и дезактивированные пользователи внезапно станут активными. Еще раз спасибо! Цените помощь! –

Смежные вопросы