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。
我有一个使用 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。