È possibile mappare una relazione uno a uno utilizzando la chiave principale e un valore discriminatore? So che per prima cosa il codice non apprezza la proprietà del discriminatore sulla classe concreta e fa riferimento solo al metodo Map.Come mappare il discriminatore di ereditarietà come chiave composta in Entity Framework?
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));
/* questo è ciò che è attualmente generato */
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)
)
/* è possibile generare/mappare questo e continuare l'eredità? */
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)
)
Grazie.
Questo è un ottimo punto, Ladislav, e sicuramente risponde alla domanda per me. EF ha certamente sfidato le mie abitudini di progettazione del database. Per il meglio, credo. –
Avrebbero potuto permetterti di leggere solo se .... – VdesmedT