2017-03-27 3 views
4

C#에서 리플렉션을 더 잘 이해할 수 있도록 미니 ORM을 만듭니다.사용자 정의 클래스에서 SQL Server 테이블을 만듭니다.

네이티브 & 순수 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? :이 솔루션은 훌륭하지만 이상적은 아닙니다. 어쩌면 어떤 상황에서는 충돌 할 수 있습니다.

  • DataTypes!
    C#과 SQL Server 데이터 유형 간의 통합은 없습니다. 예를 들어 varchar, nvarchartext은 모두 string입니다.

사용자가이 클래스를 만듭니다 그래서 때 나는 Name에 사용해야하는 SQL 서버 데이터 형식

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

?

마지막으로 SQL 쿼리를 생성하고 실행하면이 질문에 가장 적합한 방법입니다. 제안 사항은 무엇입니까?

답변

3

이름으로 어떤 SQL 형식을 사용해야합니까? 그들은 System.String 모든 경우에 NVARCHAR(MAX)에 매핑 기본적으로

은 당신이 따라야 할 예로서 엔티티 프레임 워크에서 찾고 있다면. 사용 속성은 코드 첫 번째 엔티티 모델 속성 (예를 들어 [Column(DbType = "CHAR(10)")]는 개발자가 명시 적으로 열 유형을 지정할 수 있습니다.

은 어쩌면 당신은 모든 문자열에 대한 모든 포괄 NVARCHAR(MAX)이 접근 방법과 기본을 따르고 대한 ORM 내에서 몇 가지 간단한 속성을 만들 수 있습니다 특별한 경우입니다. 런타임까지 문자열 길이를 알지 못합니다.

+2

감사합니다. 테이블을 만드는 SQL 쿼리를 생성해야합니까? 정확하지 않기 때문에 쿼리를 생성하는 대신 다른 솔루션이 있습니까? – Parsa

+1

당신은 테이블을 만들려면 [DDL] (https://en.wikipedia.org/wiki/Data_definition_language)을 SQL Server에 보내시겠습니까? 네, 그렇게하는 것이 유일한 방법이라고 생각합니다. –

관련 문제