2010-03-24 53 views
5

我正在使用实体框架来创建我的数据访问层,我希望我的所有类都是internal使用ADO.NET实体框架的内部类

我知道可以在设计人员为每个班级手动分配它。

UPDATE 我发现,我最初的发言

不过貌似这也需要设置内部修改为每一类中的每个单一的财产!我有大约30多个实体,这将是一项巨大的工作。

是错误的。我错过了当我在Entity Type上设置访问权时,我还需要在Entity Set上设置适当的访问权限。

您知道如何为整个模型设置“默认访问”吗?

回答

0

你想达到什么目的?如果模型中的每个类都被声明为内部的,并且它的所有属性都被声明为内部的,那么它会使你的模型无用。有些东西需要访问它并在某个时间使用它...

您是否试图阻止该模型的特定用法?有更好的方法来做到这一点。

更新: 它看起来像VS2010将允许通过T4模板的内部ObjectContext。看看这里:http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

+0

通过此'DataAccess'库中的设计类只能由另一个非常特殊的'Model'程序集使用。我将在'DataAccess'中拥有'InternalsVisibleTo'属性,所以只有'Model'可以使用它的类。 – Regent 2010-03-25 10:34:55

+0

如果您需要将它们标记为内部,您将不得不手动修改设计器文件。如果你的模型永远不会改变,那不是一个真正的问题......但是如果它改变了,你可能会遇到设计器文件(这是自动生成的)覆盖你的改变的情况。如果你可以使用2010,看起来T4模板可以让你实现你的目标(http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4 .aspx) – ctorx 2010-03-25 17:37:55

+0

你的观点似乎有限。从使用托管它们的库的库中抽象/隐藏数据层对象并不罕见。也许他以不同的方式访问它们。尽管如此,谢谢你也提供了一个链接让他去。 – 2016-11-23 16:56:45

1

实际上,如果你的类是内部的,如果属性是公共的 - 属性是不可见的,所以属性永远不会被访问(除非通过反射)

+0

的确如此,但是我发现我的问题是因为我错过了,如果我在'Entity Type'上设置了内部可见性,那么我还需要至少在'Entity Set'上设置内部。 – Regent 2010-03-25 10:57:03

+0

但不幸的是,我还没有找到在“EntityContainer”级别设置可见性的方法。 – Regent 2010-03-25 10:58:08

+0

通过使用CodeFirst方法,您可以完全控制模型。 – 2012-03-16 02:06:24