Я только что узнал о гениальном типе, который упростит мою работу, но похоже, что мой предпочтительный ORM не распознает его.
Есть ли обходной путь, позволяющий ServiceStack OrmLite распознавать HierarchyId
в SQL Server? Любые предложения о том, какие файлы нужно изменить и какие намеки, как действовать?
EDIT:
Вот лучшая иллюстрация проблемы. У меня есть следующий класс:
public class MyClass
{
public int Id { get; set; }
public SqlHierarchyId HierarchyId { get; set; }
}
SqlHierarchyId - это настраиваемый тип данных SQL Server. OrmLite создаст для него следующий класс:
Забавно, я могу использовать атрибут [StringLength(255)]
в свойстве, и вместо этого он получит тип varchar(255)
:
Я вручную изменил таблицу здесь и добавил тип данных столбца, чтобы продемонстрировать разницу. Обратите внимание на тип данных третьего столбца:
Наличие представления varchar
отлично подходит для других СУБД, поскольку может быть преобразовано в С#, но с SQL Server предпочтительнее, чтобы оно соответствовало соответствующему тип данных. Это упростит создание представлений (благодаря встроенным функциям типа данных HierarchyId
).
Я знаю, что тип не поддерживается EF4 (не уверен около 5). Я также просмотрел файл OrmLiteDialectProviderBase.cs на GitHub, и я вижу список поддерживаемых типов данных ADO.NET.
Мой простой вопрос: является ли это сильным ограничением ADO.NET, или это можно увидеть когда-нибудь в OrmLite? Я готов помочь продлить эту часть, если будут сделаны какие-либо предложения.