2010-05-27 50 views
1

凭借我的应用程序,我需要将我的业务实体与EF4创建的实体分离。我需要限制实体只从他们被翻译的地方(使用翻译器)访问存储库到商业和服务层共享的商业实体。我想通过将它们指定为内部来限制它们。现在我的应用程序中有超过40个实体,因此手动将它们设置为内部是一件困难的工作。在其中一个论坛中,答案建议使用T4模板。但即使这些模板从实体框架访问说明符中读取。当我尝试手动尝试将所有属性和类访问说明符指定为内部时,它给了我一个错误,说实体集也应该设置为internal,但是没有相同的选项。 我正在使用VS 2010和实体框架4.任何建议?实体框架:[设置所有具有内部访问说明符的实体]

回答

0

很难做一个搜索和替换正则表达式?右键单击您的EDMX,以XML格式打开,然后按Ctrl + H。

一个实例搜索字符串是:

\<EntityType:b{.+}\> 

一个例子替换字符串是:

\<EntityType \1 a:TypeAccess="Private" xmlns:a="http://schemas.microsoft.com/ado/2006/04/codegeneration" \> 

为了简单起见,我还没有检测到现有TypeAccess。你可以使正则表达式像你喜欢的那样复杂。

你必须选中框以告诉VS使用正则表达式。

+0

每当任何实体被定义为公共或默认访问说明符时,不会提及任何属性。只有更改访问说明符时,才会添加属性。所以搜索和替换也不会工作 – 2010-05-27 13:10:26

+0

当然,它会工作。搜索尚未具有可见性说明符的名称。你可以用正则表达式和捕获组来做到这一点。或者,如果您对此更加适应,请使用XSLT。 – 2010-05-27 13:27:08

+0

你能举一个正则表达式的例子吗? – 2010-05-27 13:51:43

1

单击DataModel.edmx的白色背景。在属性部分查找“实体容器访问”并将其更改为内部。