我刚刚开始使用Odata,我必须说我真的很喜欢它。 $ fetch,$ select,$ expand等。真是太神奇了。但是,我并不是很了解如何将odata与视图模型绑定。我对数据进行整形感兴趣的原因之一是因为odata似乎不容易支持隐藏/忽略属性。我也不相信向客户提供比当时更多的信息。
例如,您创建一个包含密码字段的用户对象。
public class User
{
public string FirstName { get; set; }
public string LastName{ get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
但是您需要提供用户列表。自然,您不想列出密码字段。您可以通过编程方式排除该字段,例如:
var users= modelBuilder.EntitySet<User>("Users");
users.EntityType.Ignore(usr => usr.password);
或者您可以在类本身中装饰它:
[IgnoreDataMember]
public string Password { get; set; } // Not visible in the EDM
问题是,如果我了解正确的情况,这两者都会以全局方式影响模型。
因此,例如,如果用户需要更改其密码,则现在无法使用User类来进行此操作。
如果我实现视图模型,似乎也会破坏odata提供的许多功能。
就像我说的那样,我对odata还是陌生的,只是很难理解如何为客户创建数据。
任何可以提供的指导都将受到赞赏。
答案 0 :(得分:0)
如前所述,最好不要隐藏密码字段,因为它是有效的用户字段。您需要在数据模型中引入/定义权限。这样,对象/字段仅显示给授权用户。