sql >> Database teknologi >  >> RDS >> Sqlserver

fejl ved indsættelse i tabel med i stedet for trigger fra entity data framework

Ved at bruge Entity Framework 4.1 løste løsningen postet af Ladislav for at tilføje en Select of Scope_Identity() til slutningen af ​​triggerkroppen problemet for mig. Jeg har kopieret hele trigger-oprettelsen her for fuldstændighedens skyld. Med denne trigger-definition var jeg i stand til at tilføje rækker til tabellen ved hjælp af context.SaveChanges().

ALTER TRIGGER [dbo].[CalcGeoLoc]
   ON  [dbo].[Address]
   INSTEAD OF INSERT
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;

-- Insert statements for trigger here
INSERT INTO Address (Street, Street2, City, StateProvince, PostalCode, Latitude, Longitude, GeoLoc, Name)
SELECT Street, Street2, City, StateProvince, PostalCode, Latitude, Longitude, geography::Point(Latitude, Longitude, 4326), Name 
FROM Inserted;

select AddressId from [dbo].Address where @@ROWCOUNT > 0 and AddressId = scope_identity();
END

Rediger til håndtering af beregnede værdier (Tak til Chris Morgan i kommentarerne):

Hvis du har andre beregnede værdier i tabellen, skal du også inkludere dem i SELECT. For eksempel hvis du havde en CreatedDate kolonne, der bruger GETDATE() du ville foretage valget sådan her:

SELECT [AddressId], [CreatedDate] from [dbo].Addresses where @@ROWCOUNT > 0 and AddressId = scope_identity();


  1. LØST:Microsoft Office 365 version 2009 kan ødelægge din databaseapplikation

  2. Fejlfinding af langvarige forespørgsler i MS SQL Server

  3. pgadmin4:postgresql-applikationsserveren kunne ikke kontaktes.

  4. Sådan gemmer du billede i kolonnen SQL Server-databasetabeller