从datacontext获取不同的表名时获取表类型

时间:2013-01-22 15:09:58

标签: c# linq datacontext

如果我们有表type,我们可以获取表名。喜欢这里

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

在我的情况下,我有表名,并希望得到表类型。但怎么样?

注意:我的DataContext案例中的表名和类型不同(拼写中)。所以我无法将表名转换为如下所示的类型。

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

2 个答案:

答案 0 :(得分:0)

我认为你找到了解决方案,但如果没有,请详细说明。

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

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

答案 1 :(得分:0)

    var db = new DataContext();
    var tables = db.Mapping.GetTables();
    var tableTypeName = tables.Where(r => r.TableName == "yourTableName").Select(r => r.RowType.Name).FirstOrDefault();