gpt4 book ai didi

entity-framework - 如何将继承鉴别器映射为 Entity Framework 中的组合键?

转载 作者:行者123 更新时间:2023-12-03 07:37:39 25 4
gpt4 key购买 nike

是否可以使用父键和鉴别器值映射一对一关系?我知道代码首先不喜欢具体类上的鉴别器属性,并且只在 Map 方法中引用它。

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 )
)

谢谢。

最佳答案

据我所知,这是不可能的,因为 EF 不允许在任何其他映射中使用鉴别器列。此外,您的目标映射将要求您的交易类也具有 FlightTypeId 属性(类必须具有整个键的属性),但这会破坏继承的含义,因为您将能够更改该属性(property)并使您的继承不一致。

关于entity-framework - 如何将继承鉴别器映射为 Entity Framework 中的组合键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com