मैं SQL सर्वर 2016 में अस्थायी तालिकाओं का उपयोग कर सकता हूं। दुर्भाग्यवश इकाई फ्रेमवर्क 6 अभी तक इस सुविधा को नहीं जानता है। क्या एंटीटी फ्रेमवर्क 6 के साथ नए क्वेरीिंग विकल्पों का उपयोग करने के लिए वर्कअराउंड की संभावना है (msdn देखें)? मैं एंटिटी फ्रेमवर्क के साथ सिस्टम-वर्जनेड टेम्पोरल टेबल का उपयोग कैसे कर सकता हूं?
मैं (thanks to Matt Ruwe) संस्था के लिए तालिका मैप करने के लिए इस्तेमाल किया edmx:
सब कुछ शुद्ध एसक्यूएल बयान के साथ ठीक काम करता है
मैं एक कर्मचारी अस्थायी तालिका के साथ एक सरल डेमो प्रोजेक्ट बनाया:
using (var context = new TemporalEntities())
{
var employee = context.Employees.Single(e => e.EmployeeID == 2);
var query = $"SELECT * FROM [TemporalTest].[dbo].[Employee] FOR SYSTEM_TIME BETWEEN '0001-01-01 00:00:00.00' AND '{employee.ValidTo:O}' WHERE EmployeeID = 2";
var historyOfEmployee = context.Employees.SqlQuery(query).ToList();
}
क्या शुद्ध एसक्यूएल के बिना प्रत्येक इकाई को इतिहास कार्यक्षमता जोड़ना संभव है? IQuerable से एसक्यूएल क्वेरी में हेरफेर करने के लिए प्रतिबिंब के साथ इकाई विस्तार के रूप में मेरा समाधान सही नहीं है। क्या ऐसा करने के लिए कोई मौजूदा एक्सटेंशन या लाइब्रेरी है?
संपादित करें:
मैं एक टेबल-मान समारोह का उपयोग करने की कोशिश की (Pawel द्वारा टीका के आधार पर):
CREATE FUNCTION dbo.GetEmployeeHistory(@EmployeeID int, @startTime datetime2, @endTime datetime2)
RETURNS TABLE
AS
RETURN
(
SELECT
EmployeeID,
[Name],
Position,
Department,
[Address],
ValidFrom,
ValidTo
FROM dbo.Employee
FOR SYSTEM_TIME BETWEEN @startTime AND @endTime
WHERE EmployeeID = @EmployeeID
);
using (var context = new TemporalEntities())
{
var employee = context.Employees.Single(e => e.EmployeeID == 2);
var historyOfEmployee = context.GetEmployeeHistory(2, DateTime.MinValue, employee.ValidTo).ToList();
}
मैं प्रत्येक इकाई के लिए एक समारोह बनाना होगा या क्या एक सामान्य विकल्प है?
को V_View मानचित्र आप एक TVF का उपयोग कर विचार किया है? – Pawel
सही इकाई प्रकार प्राप्त करना संभव है? इस उदाहरण में GetEmployeeHistory "अज्ञात" प्रकार के बजाय कर्मचारी को फिर से चालू करता है? – cSteusloff
हां। सही इकाई प्रकार प्राप्त करना संभव है। मुझे अपने सिर के शीर्ष से याद नहीं है लेकिन डिजाइनर आपके टीवीएफ के लिए मॉडल में एक प्रकार जोड़ना चाहता है। आप यह नहीं चाहते हैं - आप मौजूदा प्रकार का उपयोग करना चाहते हैं। महत्वपूर्ण बात यह है कि टीवीएफ सही कॉलम लौटाता है ताकि संस्थाओं को पूरा करना संभव हो। – Pawel