Web Api2 和受保护的设置器?

Web Api2 and protected setters?

我有一个使用 EF 直接从数据库中提取的实体,如下所示:

public class MyEntity : EntityBase {
    public string MyProperty { get; set; }
}

其中 EntityBase 如下所示

public abstract class EntityBase {
    public int Id { get; protected set; }
}

Id 受到保护的原因很简单:它在任何状态下都不应该被更改。这适用于 EF(我假设它使用反射来设置值?),但是当我通过我的网络 api 从客户端发送带有模型数据的 POST 时,Id始终为 0(默认值)。有没有办法通过 Web API 2 访问受保护的设置器?还是我必须从 DTO 手动映射它?

当您的客户端尝试创建 MyEntity 时,它应该对 id 一无所知,因为它与创建状态无关。它只知道新实体会将 MyProperty 设置为 "some value"。我更喜欢使用 dto,它们应该只包含与请求相关的信息。

对于映射,我建议使用 AutoMapper