我的疑惑是这样的,主要是因为面向对象关系才纠结此问题!或许因为我了解面向对象
概念不到位,各位大哥指点指点哦...
举例:
class Role{
int roleId;
string roleName;
}
class User{
int userId;
string userName;
}
这里让我有点为难,如果根据业务需求我要显示用户角色信息,
那么用户角色模型可以有两种方式.
举例:
方式一
class UserRole{
int urId;
User user;
Role role;
}
方式二
class UserRole{
int urId;
int userId;
string userName;
int roleId;
string roleName;
}
如果我用ORM映射UserRole模型
选择方式一那么每次我都必须映射创建User和Role模型,大量重复的创建,会不会影响效率?
选择方式二那么我只关心业务需要的东西,这样好像更简单明了,但会不会破坏我的模型关联封装?
显着多余?
请各位大侠发表下高见?
毫无疑问方式二是有问题的,因为它不够DRY,一追问就能发现问题了:为什么UserRole类既有userId又有userName?难道id还不能唯一标识出一个user吗?如果User类又添加了一个属性Address,是否也要修改对应的UserRole呢?
方式一似乎是可以的,但好像又有点奇怪。我只能说如果是我的话,我会把Role作为User类的一个属性,像这样:
class Role { ... }
class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public List<Role> Roles { get; set; }
}
这样做是因为在任何的系统中,一个User都不可避免的会有一个或多个角色,因此把它作为User的属性是合理的。
太好了!我一直也觉得我的写法怪怪的..
就是找不到其中的差异....
真是让我恍然大悟!!!我要的就是这个答案!!!