POCO对象只是“持久无知”还是更多?

时间:2015-05-12 13:50:25

标签: domain-driven-design persistence poco object-persistence

这篇question中的RPM1984谈到POCO是“持久无知”的对象。但他并没有谈论逻辑可以持有多少。例如:

class Person {
    public string FirstName { get; set; }
}

或者这个:

class Person {
    private string firstName = string.Empty;

    public string Firstname {
        get 
        { 
            return this.firstname; 
        }
        set { 
            if (value.Length > 26)
            {
                throw new System.ComponentModel.DataAnnotations.ValidationException("Firstname is too long");
            }
            this.firstname = value;
        }
    }
}

两者都是“持久的igonrant”。第一个肯定是POCO课程。但它是第二个有效的POCO吗?它有一些逻辑但它可以保持没有问题,它的逻辑只不过是验证。它可以被认为是POCO吗?

由于

1 个答案:

答案 0 :(得分:0)

是的,第二个是有效的POCO,因为它没有使用特定于持久性的细节。 POCO的重点在于某个对象并不依赖于db访问库。例如,如果您使用EF特定属性装饰 Person ,则必须在您使用该类的任何地方引用EF。