我的应用程序中有以下实体(使用EF6 codefirst)。
public partial class Staff
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public bool IsAdmin { get; set; }
public bool IsActive { get; set; }
}
public class StaffMap : EntityTypeConfiguration<Staff>
{
public StaffMap()
{
// Primary Key
this.HasKey(t => t.Id);
// Properties
this.Property(t => t.Username)
.IsRequired()
.HasMaxLength(60);
this.Property(t => t.Password)
.IsRequired()
.HasMaxLength(60);
// Table & Column Mappings
this.ToTable("Staff");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.Username).HasColumnName("Username");
this.Property(t => t.Password).HasColumnName("Password");
this.Property(t => t.IsAdmin).HasColumnName("IsAdmin");
this.Property(t => t.IsActive).HasColumnName("IsActive");
}
}
我创建了以下用于添加和编辑工作人员的viewmodel:
public class StaffViewModel
{
public int Id { get; set; }
[Required]
public string Username { get; set; }
[Description("Is Admin")]
public bool IsAdmin { get; set; }
[Description("Is Active")]
public bool IsActive { get; set; }
}
您将看到EF生成的StaffMap类中的用户名字段限制为60个字符。如果用户输入的字符串超过60个字符,则数据验证通过正常,但在尝试保存时会在链中进一步抛出数据异常。
我希望viewmodel提醒用户该字段的最大长度为60个字符,但我想避免在viewmodel中添加额外的字段长度验证。
我看到它的方式,字段长度已经在域中指定了一次,所以让viewmodel使用域字段长度会很好。
有谁知道如何实现这一目标?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果你需要在模型和视图模型中加上长度和“必要性”,我同意它违反了DRY。如果可以避免这样做会更好。我也在寻找解决方案。你放弃了吗?