@Got_Oxidus
Учусь

Преобразование DateTime в DateTime?

Модель
public class Author
    {
        [Display(Name = "Author")] //Set names on Views
        public Int32 Id { get; set; }
        [Display(Name = "Author's name")] //Set names on Views
        public String Name { get; set; }
        [DataType(DataType.Date)] //Only date in this field
        public DateTime Birthday { get; set; }
        [DataType(DataType.Date)] //Only date in this field
        public DateTime Death { get; set; }

        public IEnumerable<Book> Books { get; set; }
    }


Автосгенерированный метод
// POST: api/AuthorsApi
        [ResponseType(typeof(Author))]
        public IHttpActionResult PostAuthor(Author author)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            // Это добавил, но не помогло
            author.Birthday = author.Birthday.Date;
            author.Death = author.Death.Date;

            db.Authors.Add(author);
            db.SaveChanges();   // ************** ТУТ ОШИБКА *****************

            return CreatedAtRoute("DefaultApi", new { id = author.Id }, author);
        }


Еще немного, если надо


Автосгенерированная таблица
CREATE TABLE [dbo].[Authors] (
    [Id]       INT            IDENTITY (1, 1) NOT NULL,
    [Name]     NVARCHAR (MAX) NULL,
    [Birthday] DATETIME       NOT NULL,
    [Death]    DATETIME       NOT NULL,
    CONSTRAINT [PK_dbo.Authors] PRIMARY KEY CLUSTERED ([Id] ASC)
);


Запрос
User-Agent: Fiddler
Host: localhost:62498
Content-Type: application/json
Content-Length: 69
{"id":"0", name:"aka", "Birthday":"01.02.1234", "death":"12.11.1098"}




Ошибка
SqlException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.


Понял, что типы не подхотят друг к другу.
Как исправить, чтоб БД и Модель не трогать?
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
hePPer
@hePPer
у вас скорее всего значение/я author.Birthday; author.Death; менее 01.01.1753

ссылка

еще одна
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы