एंटिटी फ्रेमवर्क 4.1 का उपयोग करते हुए, ट्रिगर बॉडी के अंत में स्कोप_आईडेंटिटी () का चयन जोड़ने के लिए लादिस्लाव द्वारा पोस्ट किए गए समाधान ने मेरे लिए समस्या हल कर दी। मैंने संपूर्ण ट्रिगर निर्माण को पूर्णता के लिए यहां कॉपी किया है। इस ट्रिगर परिभाषा के साथ मैं संदर्भ का उपयोग करके तालिका में पंक्तियों को जोड़ने में सक्षम था। 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
गणना किए गए मानों को संभालने के लिए संपादित करें (टिप्पणियों में क्रिस मॉर्गन के लिए धन्यवाद):
यदि आपके पास तालिका में कोई अन्य गणना मूल्य है तो आपको उन्हें चयन में भी शामिल करना होगा। उदाहरण के लिए यदि आपके पास CreatedDate
. है कॉलम जो GETDATE()
. का उपयोग करता है आप इस तरह से चयन करेंगे:
SELECT [AddressId], [CreatedDate] from [dbo].Addresses where @@ROWCOUNT > 0 and AddressId = scope_identity();