Mi tabla de base de datos es asípasar un valor NULL a DateTime campo en LINQ
CREATE TABLE MYBUDGET.tbl_CurrentProperty
(
[PropID] INT NOT NULL IDENTITY(1,1),
[UpdatedOn] DATETIME NOT NULL,
[Amount] MONEY NOT NULL,
[Remarks] VARCHAR(100) NOT NULL,
)
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT PK_CurrentProperty_PropID PRIMARY KEY ([PropID])
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT DF_CurrentProperty_UpdatedOn DEFAULT (DATEADD(MINUTE,30,DATEADD(HOUR, 5, GETUTCDATE()))) FOR [UpdatedOn]
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT CK_CurrentProperty_Amount CHECK([Amount] > -1)
GO
estoy usando LINQ a SQL. En C#, necesito pasar solo campos [Cantidad] y [Comentarios] y otros campos deben usarse con sus valores predeterminados ([PropID] y [UpdatedOn]).
En C# que crean tbl_CurrentProperties objeto, como a continuación,
tbl_CurrentProperties currentProperties = new tbl_CurrentProperties();
currentProperties.Amount = 50.00M;
currentProperties.Remarks = "remarks";
y luego enviar el objeto al contexto de datos. Pero aquí, Linq asignó '1/1/0001 12:00:00 AM'
para el campo UpdatedOn. Pero esto viola el intervalo de fecha y hora de SQL 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
y Ocurre una excepción. Además, no puedo asignar un valor NULL manualmente para un campo DateTime
ya que es un tipo que no admite nulos. De todos modos, necesito hacer esto para usar su Restricción POR DEFECTO. ¿Cómo hago esto?
PD: Quiero usarlo así porque, Mi base de datos está en línea y los usuarios se encuentran en diferentes ubicaciones. Entonces, si usé DateTime.Now, la hora en la máquina del usuario puede ser incorrecta e Inserta un valor incorrecto en DB. Necesito usar el tiempo del servidor SQL siempre.
Por supuesto, si movió su lógica de negocio de su base de datos a su código, entonces no tendría este problema :-) –
algunas cosas como la fecha creada son mucho mejor tener en el db – Andrey
@Andrey: Mucha gente estaría totalmente en desacuerdo contigo. Tal vez esto fue aceptable hace 10 años, pero ahora toda la lógica comercial debería estar centralizada en el código. –