是否可以将Entity Framework用于未知数据库表?

时间:2011-08-19 15:55:15

标签: c# asp.net entity-framework ado.net

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

3 个答案:

答案 0 :(得分:3)

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

在网站上创建下拉列表,并使用查询结果填充它:

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.

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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