我希望标题和以下文字清楚,我对正确的术语不是很熟悉,所以如果我有任何错误,请纠正我。我第一次使用 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 查询来获取数据,所以我应该将此查询包装在某个函数或属性中。
所以问题是,在这个例子中,你是否会向 IUser 添加一个 Phones 属性?
换句话说,我的界面应该专门为我的数据库对象建模(在这种情况下,电话不属于 IUser),还是它们实际上只是提供一组在概念上与用户相关联的函数和属性(在这种情况下,它做)?
两种观点似乎都有缺点,但我想知道是否有解决问题的标准方法。或者只是您可以分享的任何一般的智慧之词。
我的第一个想法是使用扩展方法,但实际上这在这种情况下不起作用。