Нужна небольшая помощь, если кто-нибудь может пролить свет на это.
Я создал приложение MVC 3 с первым кодом, которое у меня работает нормально. Сейчас я занимаюсь рефакторингом, чтобы удалить как можно больше связей, так как я хочу, чтобы модель домена использовалась позже в других приложениях MVC 3. Теперь у меня есть набор сущностей, которые сохраняются через нормализованную базу данных, и они CRUD-редактируются через шаблон репозитория. Я использовал Ninject для DI репозиториев через конструктор контроллера и использую модели в проекте MVC 3 для работы в качестве DAO.
Итак, в домене у меня есть объект с именем Дело , у которого есть внешний ключ к другому делу Клиент , который выглядит следующим образом:
public class Case : ICase
{
[Key]
public int CaseId { get; set; }
public string CaseName { get; set; }
public DateTime DateCreated { get; set; }
public IClient Client { get; set; }
}
Тогда у меня есть интерфейс (интерфейс существует, главным образом, для его реализации в модели представления, чтобы добавить свои аннотации данных - я знаю, что мог бы добавить аннотации к объекту домена, но, как я уже сказал, я хочу использовать эту модель домена в других приложения, которые будут иметь другой вездесущий язык.
public interface ICase
{
int CaseId { get; set; }
string CaseName { get; set; }
DateTime DateCreated { get; set; }
IClient Client { get; set; }
}
И тогда у меня есть модель представления в проекте MVC 3.
public class CaseModel : ICase
{
[HiddenInput(DisplayValue = false)]
int CaseId { get; set; }
[Required(AllowEmptyStrings = false)]
[MaxLength(100)]
string CaseName { get; set; }
[RegularExpression("")]
DateTime DateCreated { get; set; }
IClient Client { get; set; }
}
Итак, моя первая проблема заключается в следующем: изменение ссылки на внешний ключ для Client на IClient - это новая вещь, которая возвращает нулевой объект. Когда тип был конкретным классом, он возвращался нормально - я предполагаю, что это потому, что EF4.1 пытается создать экземпляр IClient . Я здесь совершенно не прав или есть способ обойти это?
Моя вторая проблема (которая может свести на нет мою первую проблему) заключается в том, что я также делаю что-то не так, добавляя аннотации данных в модель представления, наследующую интерфейс моей сущности домена? Должен ли я использовать метаданные модели? Если да, то как я могу использовать метаданные таким образом, чтобы я мог сделать аннотации данных уникальными для каждого проекта, не затрагивая домен?
Спасибо!