sql >> Database >  >> RDS >> Sqlserver

fout bij invoegen in tabel met in plaats van trigger van entiteitsgegevensframework

Met behulp van Entity Framework 4.1, loste de oplossing die door Ladislav werd gepost om een ​​Select of Scope_Identity() toe te voegen aan het einde van de triggerbody, het probleem voor mij op. Voor de volledigheid heb ik de hele triggercreatie hier gekopieerd. Met deze triggerdefinitie kon ik rijen aan de tabel toevoegen met 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

Bewerken voor verwerking van berekende waarden (Met dank aan Chris Morgan in de reacties):

Als u nog andere berekende waarden in de tabel heeft, moet u deze ook in de SELECT opnemen. Als u bijvoorbeeld een CreatedDate . had kolom die gebruikmaakt van GETDATE() je zou de selectie als volgt maken:

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


  1. print start- en einddatum in één rij voor continue of overlappende datumbereiken in Oracle SQL

  2. SQLAlchemy-ondersteuning van Postgres Schemas

  3. Query en resultaten weergeven in een apart tabblad in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 15

  4. Problemen oplossen met SQL Server Always On-beschikbaarheidsgroepen