2017-02-03 2 views
0

У меня есть таблица, которая имеет поле, которое не равно нулю и имеет значение по умолчанию, определеннойИспользование щеголеватый для вставки в таблицу с Значения по умолчанию

[CreatedOn] not null default(getdate()) 

свойство я использую в модели для щеголеватый является обнуляемый DateTime

public DateTime? CreatedOn { get; set; } 

Если я пытаюсь вставить, исключение выбрасываются за попытку вставить нулевое значение в не нулевом поле.

cm.Insert<MyObject>(obj); //Throws because CreatedOn == null 

Что я ищу по умолчанию должен быть установлен в базе данных, и по-прежнему быть в состоянии видеть, что значение, когда я прочитал объекты. Поскольку Dapper передает значение как null, база данных выдает ошибку. Если я игнорирую свойство, я теряю способность его читать. Я надеюсь на игнорирование одного из способов или флаг, чтобы позволить dapper знать, что будет установлен по умолчанию. Как сделать эту работу?

ответ

0

Для вопроса выше, я обрабатываю значения dapper по умолчанию очень просто, добавляя их в конструктор. В вашем случае это хотелось бы выглядеть примерно так:

[Table("my_objects")] 
    public class MyObject 
    { 
    public DateTime? CreatedOn { get; set; } 

    public MyObject() 
    { 
     CreatedOn = DateTime.UtcNow; 
    } 
    } 

Однако, если вы пытаетесь справиться с created_at и updated_at через щеголеватый, а не в базе данных, я бы посоветовал после маршрута, как я изложил здесь - Dapper control dates

Наконец, если вы хотите, чтобы база данных для обработки этого поля, вы можете использовать следующий пример:

[Table("my_objects")] 
    public class MyObject 
    { 
    [Dapper.IgnoreUpdate, Dapper.IgnoreInsert] 
    public DateTime? CreatedOn { get; set; } 
    } 
+1

Что я ищу это по умолчанию должен быть установлен в базе данных, и по-прежнему быть в состоянии видеть это значение, когда я читаю объекты. Поскольку Dapper передает значение как null, база данных выдает ошибку. Если я игнорирую свойство, я теряю способность его читать. Я надеюсь на игнорирование одного из способов или флаг, чтобы позволить dapper знать, что будет установлен по умолчанию. – QueueHammer

+1

Ahhh, вы можете использовать следующие атрибуты над CreatedOn - [Dapper.IgnoreUpdate, Dapper.IgnoreInsert]. Я редактировал приведенный выше пример, чтобы показать, как этот атрибут вписывается. Это предотвратит использование DapperSimpleCrud их при вставках или обновлениях. – Zabbu

+0

В каком пространстве имен находятся эти атрибуты? Dapper.Contrib имеет атрибут Write, который принимает значение false, но доза не мешает записи. – QueueHammer

Смежные вопросы