我一直在研究使用服务层来验证我的域模型,然后再将它们保存到数据库中.
我找到了以下使用扩展方法来验证我的模型的例子,但是想知道这样做是否有任何特定的缺点?我没有看到提到的验证(除了数据注释).
我正在考虑实施以下内容:
public class FooService : IFooService {
public bool Add(Foo foo) {
if (!foo.IsValid()) {
return false
}
try ... catch
}
}
Run Code Online (Sandbox Code Playgroud)
public static class validationExtensions {
public static bool IsValid(this Foo foo) {
// Call my validation implementation here
}
}
Run Code Online (Sandbox Code Playgroud)
我很紧张,因为我没有看到这个建议/实施太多.思考?
如果您遵循应用程序应该在退出版本控制时"开箱即用"运行的原则,.htaccess则应包括在内.然而,有些东西感觉不对,因为它并不真正感觉到应用程序的一部分.我有冲突,有人可以放下心来吗?
我对XML相当陌生...
如何将以下XML发送到“ https://www.exampleserver.com ”?
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.add</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><struct>
<member><name>FirstName</name>
<value><string>John</string></value>
</member>
<member><name>LastName</name>
<value><string>Doe</string></value>
</member>
<member><name>Email</name>
<value><string>there_he_go@itsjohndoe.com</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
Run Code Online (Sandbox Code Playgroud) 鉴于子集合不能超过x个项目的不变量,域名如何保证在并发/ Web环境中强制实施这种不变量?让我们看一个(经典)示例:
我们有一个Manager与Employees.(假设的)不变量表明经理不能有超过七个直接报告Employee.我们可以这样(天真地)实现这样:
public class Manager {
// Let us assume that the employee list is mapped (somehow) from a persistence layer
public IList<Employee> employees { get; private set; }
public Manager(...) {
...
}
public void AddEmployee(Employee employee) {
if (employees.Count() < 7) {
employees.Add(employee);
} else {
throw new OverworkedManagerException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
直到最近,我才认为这种方法足够好.然而,似乎还有就是它使数据库来存储边缘的情况下更超过七名员工,从而打破不变.考虑这一系列事件:
当再次从数据库中提取域对象时,Manager …