将域中的 属性 大小复制到流畅的 api 和视图模型
Replicate property size from domain to fluent api and viewmodel
你觉得这个主意好吗...
我想将我的属性最大和最小长度从域复制到应用程序的其余部分。
例如,我有我的 Customer
实体,CustomerConfiguration
(对于 entity framework)和 CustomerViewModel
。
我必须用 fluent api 定义客户名称的最大长度,然后在 ViewModel 上进行数据注释。如果我决定改变尺寸,我必须改变所有地方。我考虑过在域 class 中的常量中定义它,例如:
代码示例
public class Customer {
.....
public const int Name_Max = 30;
public string Name { get; set; }
.......
public class CustomerConfig.....
this.Property(e => e.Name).HasMaxLength(Customer.Name_Max);
.....
public class CustomerViewModel {
......
[StringLength(Customer.Name_Max)]
public string Name { get;set;} ....
这是个好主意还是有什么建议反对这种"replication"?
我认为你的方法没有问题,相反,我们在我工作的所有公司项目中都使用这种模式。
我会在您的模型中做的一件事是使用始终有效的实体原则。它会让你的生活更轻松。
使用这个原则,您可以确保您的实体始终处于有效状态。
在这种情况下,您的属性的 setter 方法会执行如下操作:
public class Customer
{
public const int Name_Max = 30;
private string name;
public string Name
{
get { return name; }
set
{
if (value != null && value.Length > Name_Max)
throw new ArgumentException();
name = value;
}
}
}