के साथ कोई प्राथमिक कुंजी वाले दृश्य का उपयोग करके मैंने कच्चे ADO.NET और एम्बेडेड एसक्यूएल से एंटिटी में एक एप्लिकेशन को परिवर्तित करने के लिए एक प्रोजेक्ट शुरू किया। मैं एप्लिकेशन द्वारा उपयोग किए गए विचारों में से एक के साथ एक समस्या में भाग गया। दृश्य में कोई प्राथमिक कुंजी नहीं है और कोई कॉलम नहीं है (या कॉलम का संयोजन) जो विशिष्ट रूप से एक पंक्ति की पहचान करता है। यहाँएंटिटी
SELECT
filingmonth,
CEIL(filingmonth/3),
licnum,
filingyear,
DECODE(GROUPING(insurername), '1', '- All Insured -', insurername),
insurername,
policylinecode,
linedescription,
SUM(NVL(grosspremium, 0)),
SUM(DECODE(taxexempt, 1, grosspremium, 0)),
TRUNC(
CASE
WHEN
(
b.rsn IS NOT NULL
OR A.zeroreport = 1
)
AND b.datereceived IS NULL
THEN A.datereceived
ELSE b.datereceived
END),
SUM(aip.iscompanyadmitted(b.naiccocode, b.naicalienid)),
A.insuredid
FROM
aip.slbtransinsured A
LEFT OUTER JOIN aip.slbtransinsurer b
ON
A.insuredid = b.insuredid
LEFT OUTER JOIN aip.slblinecodes C
ON
b.policylinecode = C.linecode
WHERE
A.submitted = 1
AND A.entryincomplete = 0
GROUP BY
licnum,
filingmonth,
filingyear,
TRUNC(
CASE
WHEN
(
b.rsn IS NOT NULL
OR A.zeroreport = 1
)
AND b.datereceived IS NULL
THEN A.datereceived
ELSE b.datereceived
END),
ROLLUP(insurername, aip.iscompanyadmitted(b.naiccocode, b.naicalienid),
policylinecode, linedescription), A.insuredid;
और कुछ नमूना दिखा कुछ पंक्तियों को पूरी तरह से दोहराया गया है देखते हैं कि डेटा है (पंक्तियाँ 3 और 4):: यहाँ चुनिंदा दृश्य के साथ बनाया जाता है
FILINGMONTH CEIL(FILINGMONTH/3) LICNUM FILINGYEAR DECODE(GROUPING(INSURERNAME),'1','-ALLINSURED-',INSURERNAME) INSURERNAME POLICYLINECODE LINEDESCRIPTION SUM(NVL(GROSSPREMIUM,0)) SUM(DECODE(TAXEXEMPT,1,GROSSPREMIUM,0)) TRUNC(CASEWHEN(B.RSNISNOTNULLORA.ZEROREPORT=1)ANDB.DATERECEIVEDISNULLTHENA.DATERECEIVEDELSEB.DATERECEIVEDEND) SUM(AIP.ISCOMPANYADMITTED(B.NAICCOCODE,B.NAICALIENID)) INSUREDID
6 2 8150 2007 SAVERS PROPERTY AND CASUALTY INSURANCE CO SAVERS PROPERTY AND CASUALTY INSURANCE CO 17 OTHER LIABILITY 721.25 0 18-JUL-07 0 81
6 2 8150 2007 SAVERS PROPERTY AND CASUALTY INSURANCE CO SAVERS PROPERTY AND CASUALTY INSURANCE CO 17 721.25 0 18-JUL-07 0 81
6 2 8150 2007 SAVERS PROPERTY AND CASUALTY INSURANCE CO SAVERS PROPERTY AND CASUALTY INSURANCE CO 721.25 0 18-JUL-07 0 81
6 2 8150 2007 SAVERS PROPERTY AND CASUALTY INSURANCE CO SAVERS PROPERTY AND CASUALTY INSURANCE CO 721.25 0 18-JUL-07 0 81
insuredid है aip.slbtransinsured तालिका के लिए pk, rsn aip.slbtransinsurer और aip.slblinecodes के लिए pk है।
क्या एक अद्वितीय पहचानकर्ता के बिना इकाई मॉडल में कोई दृश्य जोड़ना संभव है? या दृश्य में एक अद्वितीय पंक्ति पहचानकर्ता जोड़ने का कोई आसान तरीका है? दृश्य केवल पढ़ने के लिए लिखा है, कभी नहीं लिखा है।
इसके लिए धन्यवाद - आपने वास्तव में मेरी मदद की। मैं ओरेकल टेबल के साथ काम कर रहा हूं जिसमें कोई अद्वितीय आईडी कॉलम दिखाई नहीं दे रहा है और निराशाजनक शुरुआत हुई क्योंकि LINQ एक ही पंक्ति को वापस कर रहा था। मैंने एंटिटी क्लास में अपनी खुद की कुंजी बनाने के बारे में आपके सुझाव का पालन किया और यह पूरी तरह से काम करता है। – markp3rry
मुझे लगता है कि प्रक्षेपण के लिए एक गाइड जोड़ना अधिक कुशल है। बाइनरी डेटा फ़ील्ड के विचारों में मैंने पाया है कि ( द्वारा ऑर्डर) क्वेरी धीमा करें। क्या इस दृष्टिकोण में कोई समस्या है?उदाहरण के लिए: चुनें NEWID() AS PrimaryKey, –
देखें, हालांकि, यदि आप डेटाबेस-प्रथम इकाई फ्रेमवर्क का उपयोग करते हैं तो "केवल पढ़ने वाली इकाई" सैन्स प्राथमिक कुंजी के रूप में जोड़ा गया दृश्य प्राप्त करने का एक तरीका है। जब आप एक दृश्य जोड़ते हैं तो आपको [एक साफ त्रुटि] भी मिलती है (http://stackoverflow.com/questions/24792259/error-6002-the-table-view-does-not-have-a-primary-key-defined) एक स्पष्ट कुंजी के बिना जो कहता है कि ईएफ ** ** आपकी इकाई को एक कुंजीहीन पढ़ने-योग्य इकाई होने के लिए मजबूर कर रहा है। निश्चित रूप से इसे स्वयं डुप्लिकेट करने का कोई तरीका है? – ruffin