1

如果我们有表,我们可以得到表名type。像这儿

DataContext dc = new DataContext();
var tableName = dc.Mapping.GetTable(type).TableName.ToString();

就我而言,我有表名并想要获取表类型。但如何?

注意:在我的情况下,表名和类型是不同的(拼写)DataContext。所以我无法将表名转换为如下类型。

Type tableType = Type.GetType("dbo." + tableName);
4

2 回答 2

0

我假设您找到了解决方案,但如果没有,请让我详细说明。

我只是想指出我最终使用了 DbContext ( http://msdn.microsoft.com/en-us/data/jj729737.aspx ) 而不是 DataContext。我尝试创建一个派生类来基本上重命名它,但这没有用。DataContext 需要掌握所有属性元数据(例如,[Column])。如果我费心这样做,我不妨重新编码模型(这很糟糕,因为它是代码重复)。

就我而言,我的数据库是由 ASP.NET Web API 项目生成/管理的。我与一个单独的(最终独立的)类库共享我的模型和数据库。这可能会导致一些问题,因此请确保禁用模型兼容性检查:如何在 Entity Framework 4.3 中禁用模型兼容性检查?.

于 2013-03-14T18:07:43.257 回答
0
    var db = new DataContext();
    var tables = db.Mapping.GetTables();
    var tableTypeName = tables.Where(r => r.TableName == "yourTableName").Select(r => r.RowType.Name).FirstOrDefault();
于 2013-04-24T08:53:56.643 回答