我在另一个问题中提到了这个问题,但我认为值得将其分解为自己的问题,因为它并不真正依赖于我提到的其他场景。
无论如何-到Q上,不知道这是否可能。寻找解决方案/解决方法。
我有一个类库,除了 POCO 什么都没有:
MyCompany.MyProject.Domain.POCO
这个程序集有一个像这样的 POCO:
public class Post
{
public int PostId { get; set; }
public int Name { get; set; }
...
}
现在,我有另一个类库,它是我的 DAL/Repository,并使用 Entity Framework 4.0 进行持久性:
MyCompany.MyProject.Repositories
该程序集引用了 POCO 项目,因为它需要对 POCO 执行 CRUD 操作(获取 DB 对象、投影到 POCO、返回以及修改 POCO)。
现在,我还有一个Web Application,它引用了 POCO 和 Repository 程序集。
如果我这样做:
somePOCO.PostId = 10;
我得到一个 SQLException,因为PostId是数据库中的一个 IDENTITY 字段,因此不应该明确设置。
有没有办法可以隐藏这些特殊属性的设置器,以便只有存储库才能访问设置器?
我想不出一种使用常规可访问性修饰符的方法(因为它们都不适合这种情况),你们能想到一个解决方法吗?