是否可以对未知的数据库表使用实体框架?

本文关键字:实体 框架 数据库 未知 是否 | 更新日期: 2023-09-27 18:06:03

用户选择一个数据库及其表,并将在web应用程序中浏览该表。我可以实现与实体框架?我知道EF是ORM框架,但在这种情况下,我可能不会为每个选择创建edmx文件。即使这样做了,如何根据表动态地创建POCO对象呢?在这种情况下我该怎么做?我必须使用低级ADO.NET吗?

是否可以对未知的数据库表使用实体框架?

我认为在这种情况下实体框架是不必要的。如果可能当然可以将EF用于这样的事情,但是如果只是从数据库中获取可用表名列表,并让用户选择要查看的表,那么我将简单地执行以下操作:

在站点上创建下拉列表,并使用result from query:

填充它
SELECT table_name FROM INFORMATION_SCHEMA.TABLES t

然后在用户从下拉菜单中选择一个项目后,你可以使用Ado.net绑定你的网格。比如:

string tableName = "get value from dropdown";  
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection("connection string here"))
{
    string sql = string.Format("select * from {0}", tableName);
    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    da.Fill(dt);
}
// bind dt to your grid or gui component here.

Edit我知道你至少可以部分做到这一点。您肯定可以让用户选择数据库/表,因为您可以向Contexts构造函数提供自己的连接字符串/EntityConnect对象。我不确定如何动态创建实体,但我认为你必须有一个edmx文件,其中已经生成了所有实体,或者自己从之前编写它们。

您必须首先将EF指向每个数据库,而不是期望EF动态地查看应用程序中的新数据库。