У меня есть таблица SQL Server 2014 с 2 datetime
столбцами (CreateDate
и ModifyDate
), определенными с датой по умолчанию, как показано здесь:
CREATE TABLE [PurchaseOrder].[PurchaseOrder]
(
[PurchaseOrderId] int IDENTITY(500,1) NOT NULL,
[VendorId] int NOT NULL,
[CreditTerms] nvarchar(128) NULL,
[PurchasingAgent] nvarchar(32) NOT NULL,
[SalesPerson] nvarchar(32) NOT NULL,
[TotalBeforeTax] decimal (12, 4) DEFAULT 0,
[Tax] decimal (12, 4) DEFAULT 0,
[TotalWithTax] decimal (12, 4) DEFAULT 0,
[Comments] nvarchar(256) NULL,
[CreateDate] DATETIME2 NULL,
[ModifyDate] DATETIME2 NULL
);
ALTER TABLE [PurchaseOrder].[PurchaseOrder]
ADD CONSTRAINT DF_PurchaseOrderCreateDT DEFAULT GETDATE() FOR CreateDate
go
ALTER TABLE [PurchaseOrder].[PurchaseOrder]
ADD CONSTRAINT DF_PurchaseOrderModifyDT DEFAULT GETDATE() FOR ModifyDate
go
Я использую Entity Framework 6 обновить эту таблицу. По какой-то причине столбец ModifyDate
не создает дату по умолчанию для вставок. Ниже приведен код C# для вставки Entity Framework:
static public int AddNewPurchaseOrder(PurchaseOrderViewModel aPurchaseOrderViewModel)
{
PurchaseOrder aPurchaseOrderToAdd = new PurchaseOrder();
using (RgmSiteDAL RgmSiteDALCtx = new RgmSiteDAL())
{
using (DbContextTransaction transaction = RgmSiteDALCtx.Database.BeginTransaction())
{
try
{
aPurchaseOrderToAdd.VendorId = aPurchaseOrderViewModel.VendorId;
aPurchaseOrderToAdd.CreateDate = aPurchaseOrderViewModel.CreateDate;
aPurchaseOrderToAdd.CreditTerms = aPurchaseOrderViewModel.CreditTerms;
aPurchaseOrderToAdd.PurchasingAgent = aPurchaseOrderViewModel.PurchasingAgent;
aPurchaseOrderToAdd.SalesPerson = aPurchaseOrderViewModel.SalesPerson;
aPurchaseOrderToAdd.TotalBeforeTax = aPurchaseOrderViewModel.TotalBeforeTax;
aPurchaseOrderToAdd.Tax = aPurchaseOrderViewModel.Tax;
aPurchaseOrderToAdd.TotalWithTax = aPurchaseOrderViewModel.TotalWithTax;
aPurchaseOrderToAdd.Comments = aPurchaseOrderViewModel.Comments;
RgmSiteDALCtx.PurchaseOrder.Add(aPurchaseOrderToAdd);
RgmSiteDALCtx.SaveChanges(); //save parent PurchaseOrder object
int PurchaseOrderIdentityIdIssued = aPurchaseOrderToAdd.PurchaseOrderId;
Запись вставлена без каких-либо ошибок, но столбец ModifyDate
равен нулю вместо того, чтобы текущая дата-время выдавалась из функции getdate()
назначается в операторе изменения таблицы. Я не знаю, есть ли проблема с тем, как я устанавливаю дату и время по умолчанию для таблицы, или есть что-то еще, что мне нужно сделать для сущности, у которой есть значения даты и времени, которые должны автоматически создаваться базой данных. Для объекта ModifyDate
в объекте не назначено значение даты и времени, потому что я надеялся, что SQL Server сгенерирует текущую дату в качестве значения по умолчанию. Для вставки из веб-приложения CreateDate
назначена дата.
Файл edmx в приложении ASP. NET MVC определяет эти 2 даты следующим образом:
public Nullable<System.DateTime> CreateDate { get; set; }
public Nullable<System.DateTime> ModifyDate { get; set; }
Буду признателен за любые комментарии, которые могут помочь мне выяснить, почему столбцу ModifyDate
не присваивается текущая дата, и как решить эту проблему.
Заранее спасибо.