암튼, 최근 SNG게임 만들면서 황당한 상황을 만났다.
위의 표를 자세히 보면 MSSQL char 타잎은 .NET CLR에서 지원하지 않는다. (뭥미...?)This article is just a reference of SQL Data Types to C# Data Types.
SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework) varbinary SqlBytes, SqlBinary Byte[] binary SqlBytes, SqlBinary Byte[] varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[] image None None varchar None None char None None nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[] nvarchar SqlChars, SqlString String, Char[] nchar SqlChars, SqlString String, Char[] text None None ntext None None uniqueidentifier SqlGuid Guid rowversion None Byte[] bit SqlBoolean Boolean tinyint SqlByte Byte smallint SqlInt16 Int16 int SqlInt32 Int32 bigint SqlInt64 Int64 smallmoney SqlMoney Decimal money SqlMoney Decimal numeric SqlDecimal Decimal decimal SqlDecimal Decimal real SqlSingle Single float SqlDouble Double smalldatetime SqlDateTime DateTime datetime SqlDateTime DateTime sql_variant None Object User-defined type(UDT) user-defined type None table None None cursor None None timestamp None None xml SqlXml None
그래서 이리저리 테스트해본 결과...
배열인 Char[]은 지원하고 있다는 사실을 발견하였고,
현재는 이렇게 해서 문제를 해결하고 있다.
public bool joinmember(string DeviceID, string herotype) { //LINQSQL 선언부 생략 //herotype이 Char(1)이다. um.herotype = (Char)herotype.ToCharArray(0,1)[0]; //중략 db.userMaster.InsertOnSubmit(um); //후략 }
여기에 맞추기 위해 일단 string으로 받아서 CharArray로 변환후에 [0]번째 Char로 돌려 주는 거다.
상세히 보면, String -Char[]변환->Char[]중 [0]번째만 Return -> Char
복잡하기는 하지만 잘 작동중.