2013-01-22 89 views
1

如果我們有表type,則可以獲取表名。像這裏從datacontext獲取不同的表名時獲取表類型

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

在我的情況我有表名,並希望得到表類型。但是如何?

注意:表格名稱和類型在我的DataContext情況下不同(在拼寫中)。所以我不能將表名轉換爲類型如下。

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

我甚至不知道如何得到表名與數據類型不同。不知道這是可能的 –

+0

'DataContext'採取單數表類型。就像如果你有表名'公司',那麼'DataContext'採用'公司'表類型。所以兩者在拼寫上都有所不同。 – rana

+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?

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