已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以使用事实与引用来回答.
2天前关闭。
Improve this question
我正在创建一个迷你ORM,以便更好地学习C#中的反射。
我还想使用原生和纯C#,不使用实体框架或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?:这个解决方案很好,但不理想。2可能在某些情况下会崩溃。
- 数据类型!
C#和SQL Server数据类型之间没有集成。例如,varchar
、nvarchar
和text
都是(或Map到)string
!
因此,当用户创建此类时:
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
对于Name
,我应该使用哪种SQL Server数据类型?
最后,如果生成SQL查询并执行它是解决此问题的最佳方法,您的建议是什么?
1条答案
按热度按时间wfypjpf41#
我应该使用哪种SQL类型作为Name???
如果你把Entity Framework作为一个例子,默认情况下,它们在所有情况下都将
System.String
Map到NVARCHAR(MAX)
。在Code First实体模型中使用property属性(例如[Column(DbType = "CHAR(10)")]
)允许开发人员显式地指定列类型。也许您可以遵循这种方法,并默认为所有字符串都包含
NVARCHAR(MAX)
,并在ORM中为特殊情况创建一些简单的属性。毕竟,直到运行时您才知道字符串的长度。