对于POST,EF 6数据注释可以与PUT或GET不同吗?

时间:2014-07-21 20:24:18

标签: entity-framework data-annotations

我们正在构建一个RESTful Web服务,其中POST有时需要不同的字段而不是PUT。例如,允许在插入上设置类似CustomerSinceDate的字段,但不允许在更新上设置。有没有办法用数据注释设置它?

1 个答案:

答案 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将为您提供很长的路要走,但如果您正在编写永远不会在其他任何地方重复使用的业务逻辑,那么写起来可能会很乏味。