2017-03-27 56 views
4

我正在創建一個mini-ORM,以便在C#中更好地學習反射。從用戶定義的類創建SQL Server表

而且我想用本地&純C#,不使用實體框架或SQL Server Management Objects

public static void CreateTable(Type tableType, string connectionString) 
{ 
    // codes to create table in database 
} 

的問題是CreateTable方法,有很多的IT問題,例如:

  • 我找不到任何標準的方法來創建用戶定義的類的表。 How can I generate database tables from C# classes?:這個解決方案很好,但不理想。也許它在某些情況下崩潰。

  • DataTypes!
    C#和SQL Server數據類型之間沒有集成。例如varcharnvarchartext都是(或映射到)string

因此,當一個用戶創建這個類:

public class Person 
{   
    public int ID { get; set; }   
    public string Name { get; set; } 
} 

我應該使用SQL Server的數據類型爲Name

最後,如果生成SQL查詢並執行它是這個問題的最佳方法,那麼您的建議是什麼?

回答

3

我應該使用哪種SQL類型名稱?

如果您正在尋找在實體框架作爲一個榜樣,默認情況下它們映射在所有情況下System.StringNVARCHAR(MAX)。使用屬性在代碼首先實體模型屬性(例如[Column(DbType = "CHAR(10)")]允許開發人員顯式指定列類型。

也許你可以按照這個方法,並默認爲包羅萬象NVARCHAR(MAX)的所有字符串和您的ORM中創建一些簡單的屬性你不知道字符串的長度,直到運行時,畢竟

+2

謝謝,我應該生成SQL查詢來創建表嗎?是否有另一種解決方案,而不是生成查詢?因爲它是不準確的 – Parsa

+1

你的意思是你應該發送[DDL](https://en.wikipedia.org/wiki/Data_definition_language)到SQL Server來創建表?是的,我相信這是您唯一的方法。 –

相關問題