我希望标题和下面的文字清晰,我对正确的术语不太熟悉,所以如果我弄错了任何错误,请纠正我。我第一次使用Linq ORM,并想知道如何解决以下问题。关于Linq to SQL映射对象设计的建议
说我有两个DB表:
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),还是它们实际上只是提供一组功能和属性,这些功能和属性在概念上与用户在这种情况下它)?
这两个视图似乎都有缺陷,但我想知道是否有标准的解决方法。或者只是你可以分享的任何一般智慧词汇。
我的第一个想法是使用扩展方法,但实际上在这种情况下不起作用。