c# - 从用户定义的类创建 SQL Server 表

标签 c# sql sql-server orm ado.net

<分区>

我正在创建一个迷你 ORM 以更好地学习 C# 中的反射。

此外,我想使用Native & Pure C# 并且不使用 Entity Framework 或 SQL Server Management Objects .

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

问题是CreateTable方法,里面有很多问题,例如:

  • 我找不到任何从用户定义类创建表的标准方法。 How can I generate database tables from C# classes? : 这个解决方案很好但不理想。也许它在某些情况下会崩溃。

  • 数据类型!
    C# 和 SQL Server 数据类型之间没有集成。例如 varcharnvarchartext 都是(或映射到)string !

    <

所以当用户创建这个类时:

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

我应该为 Name 使用哪种 SQL Server 数据类型?

最后,如果生成 SQL 查询并执行它是解决此问题的最佳方法,您的建议是什么?

最佳答案

Which SQL-type should I use for Name ???

如果您将 Entity Framework 视为要遵循的示例,默认情况下它们在所有情况下都将 System.String 映射到 NVARCHAR(MAX)。在 Code First 实体模型中使用属性特性(例如 [Column(DbType = "CHAR(10)")] 允许开发人员明确指定列类型。

也许您可以采用这种方法,并默认为所有字符串使用包含所有内容的 NVARCHAR(MAX),并在您的 ORM 中为特殊情况创建一些简单的属性。毕竟,直到运行时你才会知道字符串长度。

关于c# - 从用户定义的类创建 SQL Server 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042867/

相关文章:

c# - Caliburn Micro WPF : Message. Attach with guard 属性禁用整个主机控制

Mysql 多个 ORDER BY 和 UNION

mysql - SQL JOIN 不同的表并仅显示 NOT NULL 值

sql-server - 将本地托管的 drupal 7 与远程 SQL Server 2000 数据库或 Oracle 10g 连接

SQL Server : CASE statement in the where clause

c# - 函数名前的波浪号在 C# 中是什么意思?

c# - 使用 Entity Framework Code First 和 DBMigration 时生成 ntext/nvarchar 列

sql-server - SQL Server - 计算列上的索引?

c# - 在 .NET 应用程序中在哪里设置默认区域性

sql - MS SQL 更新锁定