我创建了mvc3应用程序。
我已经创建了一个.edmx
,它基于Db1
,但现在
我创建了一个基于Database2
的视图,我需要在项目中使用此视图。
为此,我需要更新我的EF .edmx
文件。
但是当我右键单击并选择选项Update model from Database
时
我只收到all tables , view ,sps from
Db1 ` its obvious
But as i need to use view which is from
Database2 how can i add it into my model
。edmx`文件?
请帮忙。
答案 0 :(得分:2)
如果两个edmx想要合并,那么为两个edmx文件制作部分类相同(将有两个设计器类)。为其他edmx文件添加另一个构造函数并使其参数化。用于标识要加载的edmx的参数。
在此类文件中的edmx partial class的Business层创建对象中添加另一个类文件,在此类中,当你想要加载谁时,edmx文件在edmx partial class constructor的构造函数中传递一些参数以识别哪个连接需要打开。
在edmx设计器类的构造函数中传递参数,基于已确定的页面名称(自定义逻辑或表名称;将加载该edmx。
在Web配置文件中,多个连接字符串可用于多个edmx文件。
答案 1 :(得分:1)
实体框架不支持将多个数据库映射到一个模型/ .edmx文件(参见:unify two models (edmx) with visual studio 2010)
因此,您需要为其他数据库创建单独的.edmx文件/模型,并使用单独的上下文引用每个模型。您的项目中也需要2个连接字符串。
答案 2 :(得分:0)
一个“hack”可能是,即MS SQL到link这两个服务器并在第一个服务器上公开来自其他服务器的数据,即通过视图。但我认为它只适用于少数几张桌子。对于巨大的模型,这将是痛苦的。其他数据库(Firebird,Oracle,...)以类似的方式支持这一点。
答案 3 :(得分:0)
我做了什么,在db A中创建了存储过程并通过该SP访问了db B,例如select * from db2.table.then为该特定SP创建一个函数import。
如果您在同一服务器上同时拥有这两个数据库,则此方法很有效。如果它们位于不同的服务器上,您可以在B上创建链接服务器以使用相同的存储过程方法访问A.
答案 4 :(得分:0)
使用ctx作为新实体()
ctx.Database.Connection.ConnectionString = conString
结束使用