2012-04-06 12 views
6

क्या माता-पिता कुंजी और भेदभावकर्ता मूल्य का उपयोग करके एक से एक रिश्ते को मानचित्र बनाना संभव है? मुझे पता है कि कोड को पहले कंक्रीट क्लास पर भेदभाव करने वाली संपत्ति पसंद नहीं है और इसे केवल मैप विधि में संदर्भित करना है।विरासत भेदभावकर्ता को एंटिटी फ्रेमवर्क में समग्र कुंजी के रूप में कैसे चिह्नित करें?

FlightTypes { Inbound = 1, Outbound = 2} 

public class Transaction 
- int TransactionId 
- int? InboundFlightId 
- InboundTransactionFlight InboundFlight 
- int? OutboundFlightId 
- OutboundTransactionFlight OutboundFlight 

public abstract class TransactionFlight 
- TransactionFlightId 

public class InboundTransactionFlight : Flight 
- List<Transaction> InboundFor 

public class OutboundTransactionFlight : Flight 
- List<Transaction> OutboundFor 

Entity<InboundTransactionFlight>().Map(m => m.Requires("FlightTypeId").HasValue(1));   
Entity<OutboundTransactionFlight>().Map(m => m.Requires("FlightTypeId").HasValue(2)); 

/वर्तमान में क्या उत्पन्न होता है * इस है */

CREATE TABLE Transactions (
    TransactionId int NOT NULL, 
    InboundFlightId int NULL, 
    OutboundFlightId int NULL 
) 

CREATE TABLE TransactionFlights (
    TransactionFlightId int NOT NULL, 
    FlightTypeId  int NOT NULL, 
    ... 
    CONSTRAINT PK_TransactionFlights PRIMARY KEY CLUSTERED (TransactionFlightId) 
) 

/* यह उत्पन्न करने के लिए संभव है/इस नक्शा और विरासत रहते हैं? */

CREATE TABLE Transactions (
    TransactionId int NOT NULL, 
) 

CREATE TABLE TransactionFlights (
    TransactionId int NOT NULL, 
    FlightTypeId int NOT NULL, 
    ... 
    CONSTRAINT PK_TransactionFlights PRIMARY KEY CLUSTERED (TransactionId, FlightTypeId) 
) 

धन्यवाद।

उत्तर

3

जैसा कि मुझे पता है कि यह संभव नहीं है क्योंकि ईएफ किसी अन्य मैपिंग में भेदभाव कॉलम का उपयोग करने की अनुमति नहीं देता है। इसके अलावा आपका लक्ष्य मैपिंग मांग करेगा कि आपके लेनदेन वर्ग में FlightTypeId संपत्ति (कक्षा में पूरी कुंजी के लिए गुण होना चाहिए) लेकिन यह विरासत का अर्थ तोड़ देगा क्योंकि आप उस संपत्ति के मूल्य को बदलने और अपनी विरासत असंगत बनाने में सक्षम होंगे ।

+0

यह एक बहुत अच्छा मुद्दा Ladislav है और निश्चित रूप से मेरे लिए सवाल का जवाब है। ईएफ ने निश्चित रूप से मेरी डेटाबेस डिजाइन आदतों को चुनौती दी है। बेहतर के लिए मुझे विश्वास है। –

+0

हालांकि वे केवल पढ़ने की अनुमति दे सकते थे .... – VdesmedT

संबंधित मुद्दे