मैं अपने डेटाबेस, BUNTS
है, जो इस्पातइकाई की रूपरेखा अमान्य फ़ील्ड नाम
CREATE TABLE BUNTS (
BUNTCODE INTEGER NOT NULL,
BUNTNAME VARCHAR(20),
BUNTSTEEL INTEGER,
......
);
और POLL_WEIGHT_BUNTS
है, जो आपरेशन कि प्रत्येक पर प्रदर्शन किया गया था बारे में जानकारी शामिल के टुकड़े बारे में जानकारी शामिल में दो तालिकाओं है बंट
CREATE TABLE POLL_WEIGHT_BUNTS (
PWBCODE INTEGER NOT NULL,
PWBBUNTCODE INTEGER,
PWBDEPARTMENTFROM INTEGER,
PWBDEPARTMENTTO INTEGER
....
);
संबंध एक-से-कई है। मैंने उन तालिकाओं को मॉडल में मैप किया। सब ठीक काम किया। हाल ही में मैं मेज बंटों जो पिछले आपरेशन कि बंट पर प्रदर्शन किया गया था करने के लिए संदर्भ होता करने के लिए एक क्षेत्र को जोड़ने के लिए तय कर लिया है:
BUNTLASTOPER INTEGER
अब अपने मॉडल इस तरह दिखेगा:
[Table("BUNTS")]
public class Bunt
{
[Key]
[Column("BUNTCODE")]
public int? Code { set; get; }
[Column("BUNTNAME")]
public string Name { set; get; }
[Column("BUNTSTEEL")]
public int? SteelCode { set; get; }
[Column("BUNTLASTOPER")]
public int? LastOperationID { set; get; }
[ForeignKey("LastOperationID")]
public BuntOperation LastOperation { set; get; }
public virtual ICollection<BuntOperation> Operations { set; get; }
}
[Table("POLL_WEIGHT_BUNTS")]
public class BuntOperation
{
[Key]
[Column("PWBCODE")]
public int? Code { set; get; }
[Column("PWBBUNTCODE")]
public int? BuntCode { set; get; }
[ForeignKey("BuntCode")]
public Bunt Bunt { set; get; }
[Column("PWBDEPARTMENTFROM")]
public int? DepartmentFromCode { set; get; }
.....
}
मैं के बाद 'यह करने के बाद, जब मैं इस
return _context.Operations;
यह नया गलत क्षेत्र Bunt_Code
के साथ एक एसक्यूएल बयान उत्पन्न करता है की तरह संचालन क्वेरी करने के लिए कोशिशSELECT
"B"."PWBCODE" AS "PWBCODE",
"B"."PWBBUNTCODE" AS "PWBBUNTCODE",
"B"."PWBDEPARTMENTFROM" AS "PWBDEPARTMENTFROM",
....
"B"."Bunt_Code" AS "Bunt_Code"
FROM "POLL_WEIGHT_BUNTS" AS "B"
मुझे लगता है कि अब ईएफ BUNTS
तालिका के लिए एक विदेशी कुंजी है, और इसे नहीं ढूंढ सकता है। तो यह Bunt_Code
फ़ील्ड उत्पन्न करता है, जो मेरे डेटाबेस में अनुपलब्ध है। लेकिन मेरे पास पहले से Bunt
BuntOperation
वर्ग में एक संपत्ति है, जो BUNTS
तालिका का संदर्भ है। मैं क्या खो रहा हूँ?
अद्यतन इस तरह लगता है मेरी समस्या का हल
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Bunt>().HasOptional(b => b.LastOperation).WithMany();
modelBuilder.Entity<Bunt>().HasMany(b => b.Operations).WithRequired(op => op.Bunt);
}
इसके बजाय' मैं तुम्हें लगता है कि शायद 'एफके के वास्तविक कॉलम नाम को संदर्भित करने के लिए' [विदेशीकी ("PWBBUNTCODE")] करने के लिए किया जाना चाहिए, लेकिन मैंने थोड़ी देर में ईएफ नहीं किया है, इसलिए गलत हो सकता है। – AaronLS
एफडब्ल्यूआईडब्ल्यू, आप 'ऑर्डर 'कॉलम को' बंटऑपरेशन 'में जोड़ने पर विचार करना चाहेंगे। यह आपको अनुक्रम में इन्हें पुनर्प्राप्त करने की क्षमता देता है (और आवश्यक होने पर बाद की तारीख में पुन: क्रमबद्ध), और अंतिम ऑपरेशन का चयन करना अंतिम [क्रमबद्ध] प्रविष्टि को चुनना आसान हो जाता है। (आपको अपने यूओडब्ल्यू में 'लास्टऑपरेशन' अपडेट करने की भी चिंता करने की आवश्यकता नहीं होगी।) –
असल में मैंने ऑर्डर कॉलम जोड़ा था, हालांकि तालिका पेड़ की तरह है, पिछले ऑपरेशन का संदर्भ देता है। लेकिन 'आखिरी सहयोग' क्षेत्र का उद्देश्य तेजी से जानकारी प्राप्त करना है कि स्टील का एक टुकड़ा कहां और किस राज्य में है। 'बाएं शामिल' और यह है कि, ऑर्डर द्वारा क्रमबद्ध करने और शीर्ष 1 रिकॉर्ड – Pallaris