Entity framework 对于POST和PUT或GET,EF 6数据注释是否可以不同?

Entity framework 对于POST和PUT或GET,EF 6数据注释是否可以不同?,entity-framework,data-annotations,Entity Framework,Data Annotations,我们正在构建一个restfulweb服务,其中POST和PUT有时需要不同的字段。例如,允许在插入时设置CustomerSinceDate之类的字段,但不能在更新时设置。有没有一种方法可以通过数据注释来设置它?EntityFramework不知道也不应该知道有关web服务的任何信息。它只处理持久层中存在的规则 你要找的是验证 因此,在REST服务中,您应该检查CustomersionData是否已更改,以及实体是否正在更新。如果是这样,您应该向使用者抛出一个异常,并向使用者发送一条适当的消息 以

我们正在构建一个restfulweb服务,其中POST和PUT有时需要不同的字段。例如,允许在插入时设置CustomerSinceDate之类的字段,但不能在更新时设置。有没有一种方法可以通过数据注释来设置它?

EntityFramework不知道也不应该知道有关web服务的任何信息。它只处理持久层中存在的规则

你要找的是验证

因此,在REST服务中,您应该检查CustomersionData是否已更改,以及实体是否正在更新。如果是这样,您应该向使用者抛出一个异常,并向使用者发送一条适当的消息

以下是一篇关于编写自己的DataAnnotation的文章,如果您喜欢使用这些注释:

否则,请阅读本文,了解如何编写自己的自定义验证: 特别是关于IValidatableObject的部分

您的规则可以表述为伪代码

//if object exists in db AND CustomerSinceData has changed

DataAnnotation将为您带来很大的帮助,但如果您正在编写永远不会在其他地方重用的业务逻辑,那么编写DataAnnotation可能会非常繁琐。

问题更多地是关于文档的。让我试着澄清一下。我只是想了解一下,所以我不确定我用的是正确的术语。数据注释为web服务的使用者生成文档,但它可能会产生误导。如果我标记了一个字段[必填],它将显示您是否正在查看GET、PUT或POST文档。某些适用于POST的字段(如CustomerSinceDate)无法在PUT中设置。我知道如何设置验证,但不知道是否可以在文档中显示/隐藏参数或根据功能显示不同的注释。可能的