我使用代码优先与实体框架来建模和创建我的数据库。
我只是想知道--当我将对象返回给用户时--我不想返回像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);
}
}发布于 2018-01-15 21:03:47
将您的数据库模型与视图模型分开--这是我所采取的方法,并且已经做了很长一段时间。这会给你一个很好的分离。一旦您开始处理ViewModel,您就可以使用像Automapper或自定义映射类这样的库将ViewModel转换为数据库模型,反之亦然。我希望它能帮上忙
发布于 2018-01-15 22:24:29
永远不要将数据库模型作为最终用户的结果,并将其与表示/应用程序层分开。
你会遇到这么多问题:
我想推荐以下几点:
https://stackoverflow.com/questions/48270501
复制相似问题