如果我们有表type
,我们可以获取表名。喜欢这里
DataContext dc = new DataContext();
var tableName = dc.Mapping.GetTable(type).TableName.ToString();
在我的情况下,我有表名,并希望得到表类型。但怎么样?
注意:我的DataContext
案例中的表名和类型不同(拼写中)。所以我无法将表名转换为如下所示的类型。
Type tableType = Type.GetType("dbo." + tableName);
答案 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();