存储在具有数据约束(例如最大字符串属性长度)的关系数据库中的数据。客户端使用数据访问库(DAL)来管理ORM的方式(库+数据域类)DAL。建模数据约束最佳实践
会在哪里你亲自实施限制的数据? 例如:
数据域类:
class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = StringHelper.Truncate(value, 50) }
}
...
}
或可能是仓库:
PersonRepository {
public void CreatePerson(Person p) {
p.Name = StringHelper.Truncate(p.Name, 50);
...
DataContext.Insert(..);
}
}
或者,你应使用分配给数据领域类属性的属性将在资源库中处理方法通过反射自动化字符串字段截断。
class Person {
[StringConstraint(MaxLength = 50)]
public string Name { get; set; }
}
PersonRepository::CreatePerson(p) {
EntityHelper.ApplyConstraints(p);
...
}
或者可能是别的东西?
预先感谢您!
我有UI来操纵数据,我想拒绝用户输入太长的字符串。如果程序会告诉他们'Sql error occurred',那么数据约束应该以某种方式转换为UI,这将是不正常的。 – 2010-08-22 05:06:47
你不会告诉使用SQL错误的用户; SQL错误将被应用程序捕获并且应用程序会呈现该字符串太长的味精。是“通过向用户显示有用的消息来处理该错误取决于应用程序。”那很难理解?! – 2010-08-22 05:11:37
我明白了,但只要输入冗长的字符串,而不是花费时间与任何类型的错误消息(“嘿!你的名字太长!请删除10个字符”)的ui-dbms往返,就会更加用户友好。对于我的意见,应该从dbms级别冒出来。 – 2010-08-22 05:16:46