Как использовать конструктор LINQ to SQL для создания методов доступа для подклассов?

StackOverflow https://stackoverflow.com/questions/2541964

Вопрос

альтернативный текст http://img16.imageshack.us/img16/8085/datacontext.jpg

Выше представлено представление конструктора LINQ to SQL для моего контекста данных.

Ниже приведен соответствующий код, который генерирует дизайнер:

Аксессор абстрактного класса ActivityBase:

        public System.Data.Linq.Table<ActivityBase> ActivityBases
        {
            get
            {
                return this.GetTable<ActivityBase>();
            }
        }

Класс ActivityBase и список подклассов:

[Table(Name="dbo.Activities")]
[InheritanceMapping(Code="1", Type=typeof(ActivityBase), IsDefault=true)]
[InheritanceMapping(Code="2", Type=typeof(Project))]
[InheritanceMapping(Code="3", Type=typeof(ProjectActivity))]
[InheritanceMapping(Code="5", Type=typeof(Task))]
[InheritanceMapping(Code="4", Type=typeof(Activity))]
public abstract partial class ActivityBase : INotifyPropertyChanging, INotifyPropertyChanged
{

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

Я делаю это неправильно?не следует ли мне создавать средства доступа для подклассов?фильтрация из ActivityBase мне кажется хуже.

Спасибо за любую помощь в этом вопросе.

Это было полезно?

Решение

Обратите внимание, что LINQ to SQL создает частичные классы.Если вы хотите изменить автоматически сгенерированные классы, вы можете сделать это, объявив частичный класс с тем же именем и добавив туда методы.Таким образом, они не будут перезаписаны при внесении изменений в дизайнер.

Другие советы

Я нашел этот вопрос ответом на то, что я хотел знать:

Для чего нужен файл .cs в MyDataContext.dbml?

поскольку контекст данных также является частичным классом, я могу использовать этот файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top