我有一个使用Web Api构建的聊天应用程序后端,我将几个数据库实体直接暴露给客户端.我想知道是否有任何积极的观点将实体映射到DTO,或者我是否应该像我目前一样继续暴露实体.只是为了澄清我不是要求DTO与非DTO一般性问题,而只是在这种情况下使用它的优点,因为实体中的大多数字段可能会被客户端使用.
这是我的模型及其相关的枚举,我在下面使用实体框架5和asp.net mvc4 codefirst.我也在使用便携式数据库文件(.mdf)
public class Project
{
public Project()
{
Images = new List<ProjectImage>();
}
public int ProjectId { get; set; }
[Required]
public string Title { get; set; }
public virtual ICollection<ProjectImage> Images { get; set; }
public string Description { get; set; }
public ProjectType Type { get; set; }
public ProjectState State { get; set; }
}
public enum ProjectType
{
Phone,
Web,
Windows
}
public enum ProjectState : byte
{
InProgress,
NotStarted,
Done
}
Run Code Online (Sandbox Code Playgroud)
从视图中回发模型后,除枚举字段外,所有字段都会正确保存到数据库中.它们会被保存,但即使在视图中选择了不同的值,也只会保存每个枚举类型的第一个值.
我也试过保存编辑,同样的事情也发生了. …