我们正在构建一个RESTful Web服务,其中POST有时需要不同的字段而不是PUT。例如,允许在插入上设置类似CustomerSinceDate的字段,但不允许在更新上设置。有没有办法用数据注释设置它?
答案 0 :(得分:0)
EntityFramework不会(也不应该)了解您的Web服务。它仅处理持久层中存在的规则。
您正在寻找的是验证。
因此,在您的REST服务中,您应该检查CustomerSinceData是否已更改,并且实体正在更新。如果是这样,您应该向消费者抛出一个带有适当消息的异常。
如果您更喜欢使用这些文章,请参阅以下文章:
http://msdn.microsoft.com/en-us/data/jj819164#attributes
否则,请查看本文,了解如何编写自己的自定义验证:http://msdn.microsoft.com/en-us/data/gg193959.aspx (特别是关于IValidatableObject的部分)。
您的规则可以表述为(伪代码)
//if object exists in db AND CustomerSinceData has changed
DataAnnotations将为您提供很长的路要走,但如果您正在编写永远不会在其他任何地方重复使用的业务逻辑,那么写起来可能会很乏味。