如何用实体框架4打开未知结构数据库
我已经“Google”和“Bing”了所有试图解决这个问题的网络...... 我没有成功,所以我返回到 ADO.NET 4.x 继续我的工作
我有一个程序,用户可以在其中选择并打开任何数据库... 所选数据库的表、视图、存储过程等显示在树中,以便用户可以单击节点并在网格中查看/编辑数据。
在与 EF4(DB First、Model First、Code First 等)斗争了几次之后,我找不到一种方法在运行时为用户选择的数据库生成实体...
任何人都可以提供额外的信息...也许是示例代码???
I've 'Googled' and 'Binged' for all the Web trying to solve this problem...
I had no success so I returned to ADO.NET 4.x to continue my work
I have a program in which the user can select and open any database...
The tables, views, stored procs, etc. of the select database are shown in a tree so the user can click a node and view/edit data in a grid.
After struggling a few times with EF4 (DB First, Model First, Code First, etc.) I cant find a way to at runtime generate the entities for the user selected database...
Anyone can provide extra Info... maybe sample code ???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你不能。
实体框架(与任何其他 ORM 一样)用于将数据模型映射到逻辑模型。如果没有映射(也没有逻辑模型),就没有实体框架。
在这种情况下,ADO 是可行的方法。
经过一番质疑,这是可以做到的,但涉及疯狂的步骤。
为此,您必须根据查询主数据库获得的信息生成 edmx xml,在运行时从该 xml 生成类(数据上下文和实体),通过代码 dom 将它们加载到您的 AppDomain 中,然后您可以通过实体框架使用这个动态生成的数据上下文。
简而言之:对于这种数据模型完全未知且不断变化的场景,请坚持使用优秀的 ADO.NET。它就是为此量身定制的。
You can't.
Entity Framework (like any other ORM) is used to map a data model to a logical model. If there's no mapping (and no logical model), there's no Entity Framework.
ADO is the way to go in this case.
After some questionning, it is possible to do it, but it involves crazy steps.
To do it, you'd have to generate the edmx xml from the informations you'll get by querying the master database, from this xml generate the classes (data context and entities) at runtime, load them in your AppDomain through code dom, and then you could use this dynamically generated data context through Entity Framework.
In one sentence : for this kind of scenario where you data model is totally unknown and changing, stick to good ol' ADO.NET. It's tailored for this.