2015-06-16 112 views
6

我是SQL Server的新手,試圖弄清楚是否有方法在我創建的表和實體中獲取列的數據類型。實體框架 - 獲取SQL Server字段數據類型

舉例來說,如果我有一個SQL Server表「Employees」中有以下列

employeeID int, empName varchar(255), empDept varchar(100) 

有沒有辦法找到在C#/實體框架empName字段的數據類型?

最後我想看到的是數據類型和列長度。所以,如果我循環遍歷表/實體中的所有字段,我希望看到:「varchar(255)」,「varchar(100)」,「int」等。

+0

當你說找到數據類型...何時以及如何獲得數據類型?從代碼?通過元數據查找它? – TheMadDBA

+0

我寧願在代碼中。如果有一個函數可以使用並存儲在一個理想的變量中。 – Ryan

+0

點擊[這裏](http://stackoverflow.com/questions/1601727/how-do-i-return-the-sql-data-types-from-my-query)! 上述鏈接可以幫助您解決問題。 – vj78

回答

0

您可以創建存儲過程,並呼籲從EF傳入表名,或運行原始的SQL命令類似以下內容:

var sqlToRun = string.format(@"SELECT column_name as 'Column Name', 
    data_type as 'Data Type', 
    character_maximum_length as 'Max Length' 
    FROM information_schema.columns 
    WHERE table_name = '{0}'", myTableName); 

using (var context = new dbContext()) 
{ 
    var tableFieldDetails= context.SqlQuery(sqlToRun).ToList(); 

    //do something with the tableFieldDetails collection 
} 

...其中myTableName是表的名稱從返回字段信息。

請注意,如果您使用的是nvarchar(MAX)varchar(MAX),則返回-1,並且我確定可能會有其他異常,因爲我沒有測試過所有類型。

而且我沒有測試過C#的上方,所以它可能需要一個調整的工作,但原則是好的,會被封裝在一個不錯的方法;-)

欲瞭解更多信息運行原料受益EF中的sql參見https://msdn.microsoft.com/en-us/data/jj592907.aspx

相關問題