我有一个实体,我使用EF直接从数据库中提取,如下所示:
public class MyEntity : EntityBase {
public string MyProperty { get; set; }
}
EntityBase
如下所示
public abstract class EntityBase {
public int Id { get; protected set; }
}
Id
受保护的原因很简单:不应在任何状态下更改它。这适用于EF(我假设它使用反射来设置值?),但是当我通过我的web api从客户端发送带有模型数据的POST
时,Id
始终为0(默认)。有没有办法使用Web API 2访问受保护的setter?或者我是否必须从DTO手动映射?
答案 0 :(得分:0)
当您的客户尝试创建MyEntity时,它应该对id一无所知,因为它与创建状态无关。它只知道新实体将MyProperty设置为“某个值”。我更喜欢使用dto,它们应该只包含请求相关的信息。
对于映射,我建议使用AutoMapper。