sks*_*laj 4 entity-framework oracle11g .net-4.5 visual-studio-2013 odp.net-managed
我有一个需要解决的严重问题.
在VS2013中的服务器资源管理器中,我使用有效的用户和密码凭据建立了与数据库的连接.
所以我有一个名为Connect1的模式,它需要访问另一个名为Connect2的模式,这两个模式都在相同的数据源名称下:Dev1.我正在连接的用户称为Connect1,因此默认情况下我已连接到架构Connect1.我能够验证我是否具有此用户访问Connect2的访问权限.
使用ODP.NET托管驱动程序,我能够设置它.提供所有连接细节.
配置显示在此页面中:
使用适用于Visual Studio的Oracle Developer Tools
为了允许查看模式,我不得不更改Filters选项卡,并添加我正在使用的所有相关模式(添加Connect2).然后我点击更新,我就可以将这些表用到我的edmx文件中.
但是,当我关闭Visual Studios时会出现问题.我的过滤器丢失了,我的连接又恢复使用Connect1.
然后,这会在我的edmx文件中用一系列破坏我的表映射
错误11007:未映射实体类型"Table1"
这真是令人沮丧,因为我不得不一遍又一遍地重复相同的过程手动重新映射我的所有表.
当我从我的服务器资源管理器更新数据连接以包含第二个模式时,令人困惑的是.EF工作并检测表格; 但我的应用程序配置和连接字符串尚未更改.因此,这让我相信,如果我要将我的项目推广到生产或测试,它将会破坏,因为我的项目中没有任何内容可以显示需要Connect2.
好吧,我意识到从未正确解释的重大缺陷.如果您想要将EF与Oracle一起使用并且您正在使用其他架构,我强烈建议人们遵循这一点.
缺点是,由于我们向EDMX引入了oracle的模式约定,因此无法知道映射的易变性.这对于微软来说从来不是问题的原因是因为SQL服务器中没有架构这样的东西.要在同一个edmx文件中实现两个数据库,有一些可见的预防措施会阻止您添加任何表.在我们引入模式之后,它变得非常脆弱.
所以你要做的就是按照添加模式的步骤(正如我在问题中解释的那样).转到"过滤器"选项卡,以这种方式添加模式,然后单击"更新"按钮.
将其应用于服务器资源管理器后,edmx将有权从该架构添加表.当您这样做时,EDMX会重新收集其文件中嵌入的架构.因此,如果您曾经关闭视觉工作室,并重新打开并运行该项目,它仍然可以工作.
以下是您想要避免的一些提示:不要重命名任何实体和列(属性),即使它使您的代码更具可读性.那是第一个呃哦.由于映射非常不稳定,如果你碰巧陷入困境,重新将所有内容重新打包将是一件苦差事.
第二个呃哦,就是当你关闭Visual Studios,再次重新打开它,忘记在服务器资源管理器中重新包装你的模式,转到edmx并执行"从数据库更新模型"以包含其他任何内容(但最重要的是..即使如此您不做任何事情)并且单击"确定",无论是否进行了更改,您的模型仍将更新,丢失您之前所做的所有映射.这就是我所说的易失地图.
如果发生这种情况,你没有做第一个uh-oh重命名实体或属性..是删除你已经存在的所有实体,并重新添加它们.
您要删除所有实体的原因是因为添加具有相同名称的新实体将添加具有相同名称+数字的新实体.因此,类似客户的实体仍将存在,再次添加实体将创建一个名为Customer1的新实体.
叹.
归档时间: |
|
查看次数: |
3170 次 |
最近记录: |