Где разместить код для конкретной модели при использовании .dbml конструктора? - PullRequest
0 голосов
/ 20 января 2010

Я создаю приложение asp.net mvc, чтобы пользователи могли участвовать в конкурсе эссе. У меня есть таблица эссе в SQL Server 2005. Я создал свои доменные модели, перетаскивая таблицы в обозревателе серверов и сохраняя макет как то, что я назвал DAL.dbml.

Сейчас я пытаюсь реализовать проверку поля ввода на бизнес-уровне, используя методы, упомянутые в главе 11 Pro ASP.NET MVC Framework Стивена Сандерсона. Но автор не создавал свои модели, как я, поэтому я не знаю, куда поместить свой код для конкретной модели.

Я подумал о том, чтобы поместить его в автоматически сгенерированный файл DAL.designer.cs, но это кажется проблематичным.

Я также попытался создать новый класс EssayRequired.cs, где я сделал расширение EssayRequired Essay. Это почти сработало.

Он успешно показал все ошибки валидации.

Но когда приходит время действительно сохранить запись:

EssayTable.Context.Refresh(RefreshMode.KeepCurrentValues, essay);
EssayTable.Context.SubmitChanges();

Я получаю эту ошибку:

Тип 'DomainModel.Entities.EssayRequired' не отображается в виде таблицы.

Есть идеи, что мне делать сейчас? Есть ли лучшее место для размещения специфичного для домена кода, который не будет уничтожен, если таблица БД изменится, и мне придется удалить и заново перетащить таблицу?

Или есть способ сообщить приложению, что объект EssayRequired должен попасть в таблицу эссе .?

Спасибо, Скотт

1 Ответ

0 голосов
/ 20 января 2010

Вы можете создать partial Essay class в том же пространстве имен, что и файл dbml.

public partial class Essay
{
    partial void OnCreated()
    {
       // handle additional stuff on creation, for instance.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...