我想要的桌子看起來像這樣...
Identity | Id (PK), Tag
Character | IdentityId (FK, PK), Health
字符表應該只參考身份表的一行......并且身份表不應該以 1:0 的比例參考任何其他內容。
我現在的模型看起來像這樣......
/// <summary>
/// Represents an identity in our database.
/// </summary>
public class Identity {
public long Id { get; set; }
public string Tag { get; set; }
}
/// <summary>
/// Represents an character ingame with all his attributes.
/// </summary>
public class Character {
public Identity Identity { get; set; }
public float Health { get; set; }
}
modelBuilder.Entity<Identity>(entity => {
entity.ToTable("identity");
entity.HasKey(e => e.Id);
});
modelBuilder.Entity<Character>(entity => {
entity.ToTable("character");
// entity.HasKey(e -> e.Identity.Id); DOES NOT WORK
entity.Navigation(character => character.Identity).AutoInclude();
});
這樣做的問題是對字符內部身份的參考不算作主鍵……也不算外鍵。
e -> e.Identity.Id 由于某種原因不起作用,并導致錯誤告訴我這是不可能的。
我希望IdentityCharacter 內部算作他的主鍵,同時仍然是對 Identity-Table 中一行的參考(外鍵)。然而,身份表不應參考該字符。
這可能嗎 ?如果是這樣……怎么辦?
uj5u.com熱心網友回復:
您可以在 Identity 類中創建一個屬性
public class Identity {
public long Id { get; set; }
public string Tag { get; set; }
public Character Character { get; set; }
}
然后你的模型變成
modelBuilder.Entity<Identity>()
.HasOne(x => x.Character)
.WithOne(x => x.Identity)
.HasForeignKey<Character>(x => x.YourFkKey);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/313327.html
