Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Пользовательский value type и проблема с роутингом / 2 сообщений из 2, страница 1 из 1
20.11.2015, 13:53
    #39108986
RomaMarusyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательский value type и проблема с роутингом
В нашем проекте WebApi мы используем EF CodeFirst подход. Также мы используем 2 вида баз данных: SQL Server и MySQL. Все таблицы имеют поле ID, но в базе данных SQL Server это поле имеет тип данных INT, а в базе данных MySQL - char(36) и содержит GUID.

Чтобы решить проблему, я создал пользовательский тип значения IdType и изменил все классы модели, чтобы использовали этот тип вместо INT:
Код: c#
1.
2.
3.
4.
5.
6.
public class Document
{
  public IdType ID { get; set; }
  public string DocumentNm { get; set; }
  ...
}


Затем я настроил DbContext (например, для SQL Server)
Код: c#
1.
modelBuilder.Properties<IdType>().Configure(c => c.HasColumnType("int"));


... и репозиторий:
Код: c#
1.
2.
3.
4.
5.
6.
public interface IRepository<T> where T : IEntity
{
  IQueryable<T> GetAll();
  T GetById(IdType id);
  ...
}


После этого, когда я пытаюсь идти до, например http://localhost:7081/api/Document, он дает мне ошибку:
Multiple actions were found that match the request: \r\nGet on type WebUI.Controllers.API.DocumentController\r\nGetById on type WebUI.Controllers.API.DocumentController
Я использую по умолчанию настройки маршрутизации. Вот [HttpGet] методы из DocumentController:
Код: c#
1.
2.
public HttpResponseMessage Get() { ... }
public HttpResponseMessage GetById(IdType id) { ... }


Как я могу решить эту проблему? Может ли это быть причиной неправильной реализации IdType?

Я создал IdType для Int значений, как описано здесь .
...
Рейтинг: 0 / 0
20.11.2015, 14:09
    #39109023
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользовательский value type и проблема с роутингом
свои value типы эт ...у меня дурной опыт был )
зачем так сложно?
принимай всегда строку. в коде проверяй если это число то запрос туда то если гуид то сюда. профит.

п.с. скорее всего дефолтный биндер мвц не может понять твой тип данных.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Пользовательский value type и проблема с роутингом / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]