我使用代码优先实体框架来建模和创建我的数据库。
我只是想知道 - 当我向用户返回对象时 - 我不想返回像id这样的数据敏感字段。
我应该在返回给用户时添加像[DoNotReturn]
这样的atttibute结合过滤器来删除这些字段,还是应该创建一个不包含这些字段的全新类?
示例:
public class UserAccount
{
//Option 1 - Hide fields
[DoNotReturn]
public int Id { get; set; }
[Index(IsUnique = true)]
[MaxLength(50)]
public string Username { get; set; }
public decimal Cash { get; set; }
[DoNotReturn]
public Account Account { get; set; } //Contains Email / Password
//Option 2 - return a `safe` version
public User UserAccountToFriendly() {
return new FriendlyUser(this.Username, this.Cash);
}
}
答案 0 :(得分:3)
将您的数据库模型与您的视图模型分开,这是我采用的方法,并且已经做了很长时间。它会给你一个很好的分离。一旦开始处理ViewModel,就可以使用像Automapper或自定义映射类这样的库将ViewModel转换为数据库模型,反之亦然。我希望它有所帮助
答案 1 :(得分:2)
永远不要将数据库模型用作最终用户的结果,并将其与Presentation / Application层分开。
你会遇到很多问题:
我想推荐以下内容: