Я надеюсь, что заголовок и следующий текст понятны, я не очень хорошо знаю правильные термины, поэтому, пожалуйста, исправьте меня, если я что-то не так. Я впервые использую Linq ORM, и мне интересно, как решить следующие вопросы.
Скажем, у меня есть две таблицы БД:
User
----
Id
Name
Phone
-----
Id
UserId
Model
Генератор кода Linq создает несколько классов сущностей.
Затем я пишу свои собственные классы и интерфейсы, которые обертывают эти классы Linq:
class DatabaseUser : IUser
{
public DatabaseUser(User user)
{
_user = user;
}
public Guid Id
{
get { return _user.Id; }
}
... etc
}
пока все хорошо.
Теперь достаточно просто найти телефоны пользователей из Phones.Where(p => p.User = user)
, но, конечно же, пользователям API не нужно писать свои собственные запросы Linq для получения данных, поэтому я должен заключить этот запрос в функцию или свойство где-нибудь .
Таким образом, вопрос, в этом примере, добавите ли вы свойство Phones в IUser или нет?
Другими словами, должен ли мой интерфейс специально моделировать объекты моей базы данных (в этом случае телефоны не принадлежат IUser), или они на самом деле просто предоставляют набор функций и свойств, которые концептуально связаны с пользователем (в в каком случае это делает)?
Кажется, есть недостатки в обоих взглядах, но мне интересно, существует ли стандартный подход к проблеме. Или просто какие-нибудь общие слова мудрости, которыми вы могли бы поделиться.
Моей первой мыслью было использование методов расширения, но на самом деле это не работает в этом случае.