ADO.NET实体框架中的内部类

5
我正在使用Entity Framework创建我的数据访问层,我希望所有的类都是“internal”的。
我知道可以在设计器中为每个类手动分配它。
更新: 我发现我的初始陈述是不正确的。
引用: 但是看起来还需要为每个类中的每个单独属性设置内部修饰符!我有大约30个实体,这将是一个巨大的工作。
我错过了当我设置“Entity Type”的访问时,我也需要在“Entity Set”上设置适当的访问权限。
你知道如何为整个模型设置“默认访问权限”吗?
2个回答

1
其实,如果你的类是 internal 的话,属性是否为 public 并不重要——这个类本身在你的项目之外是不可见的,所以这些属性永远无法被访问(除非通过反射)。

是的,但我发现我的问题是因为我错过了一个细节,即如果我在“实体类型”上设置了内部可见性,则至少还需要在“实体集”上设置内部可见性。 - Regent
但不幸的是,我还没有找到在“EntityContainer”级别上设置可见性的方法。 - Regent
通过使用CodeFirst方法,您可以完全掌控您的模型。 - Marcel Valdez Orozco

0
你到底想要实现什么?如果你的模型中的每个类都声明为 internal,而且它的所有属性也都声明为 internal,那么它将变得毫无用处。总有些东西需要访问它并与之交互...
你是想防止特定的模型使用吗?有更好的方法来做这件事。
更新: 看起来 VS2010 将允许通过 T4 模板生成一个 internal 的 ObjectContext。请参考这里:http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

按设计,此 DataAccess 库中的类应仅由另一个非常特定的 Model 组件使用。我将在 DataAccess 中具有 InternalsVisibleTo 属性,因此只有 Model 可以使用其类。 - Regent
如果您需要将它们标记为内部的,您将不得不手动修改设计文件。如果您的模型从未更改过,那就不是问题...但如果它发生了变化,您可能会遇到这样一种情况:设计文件(自动生成的)覆盖了您的更改。如果您可以使用2010年版本,看起来T4模板可以让您实现您想要的效果(http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx)。 - ctorx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接