1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
兩個(gè)從站具有相同的 MasterID(“Master 01”)和相同的鑒別器(空),因此它們具有相同的主鍵,這導(dǎo)致了問題。
更新
一種可能的解決方案是為每種類型添加一個(gè)鑒別器:
public class SlaveA : Slave
{
public string Discriminator => "S1";
[Column("SlaveAValue")]
[Required]
public string SlaveAValue { get; set; }
}
public class SlaveB : Slave
{
public string Discriminator => "S2";
[Column("SlaveBValue")]
[Required]
public string SlaveBValue { get; set; }
}
替代方案
對(duì)以上內(nèi)容表示歉意。我認(rèn)為更好的選擇是在 Slaves 表上有一個(gè)新的人工主鍵。
CREATE TABLE Slaves (
SlavesId INT NOT NULL IDENTITY PRIMARY KEY,
MasterId VARCHAR2 NOT NULL,
Discriminator VARCHAR2 NOT NULL,
SlaveAValue VARCHAR2,
SlaveBValue VARCHAR2,
FOREIGN KEY (MasterId) REFERENCES Master(Id) ON DELETE CASCADE
);
[Table("Slaves")]
public abstract class Slave
{
[Column("SlaveId")]
[Key]
public int SlaveId {get;set;}
[Column("MasterId")]
[Required]
public string MasterId { get; set; }
[ForeignKey("MasterId")]
public Master Master { get; set; }
}
然后在您的數(shù)據(jù)庫(kù)中添加一個(gè)唯一索引,以確保每個(gè) master 類型不會(huì)超過一種:
CREATE UNIQUE INDEX master_index ON Slaves(MasterId, Discriminator);
- 1 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)