【发布时间】:2019-02-01 19:16:34
【问题描述】:
我有一个与两者相关的“声明”表:
- “交易”表(在 IdStatement 上有一个外键)
- “SpecificTransactions”表。 “SpecificTransaction”类继承自“Transaction”表
这是现有的代码First Model:
-
表格语句
[Serializable] [Table("Statement", Schema = "dbo")] public class Statement { public Statement() { this.Transactions = new List<Transaction>(); this.SpecificTransactions = new List<SpecificTransaction>(); } [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int IdStatement { get; set; } public List<Transaction> Transactions { get; set; } public List<SpecificTransaction> SpecificTransactions { get; set; } [... Other properties ...] } -
表事务
[Serializable] [Table("Transaction", Schema = "dbo")] public class Transaction { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int IdTransaction { get; set; } [ForeignKey("Statement")] public Nullable<int> IdStatement { get; set; } [... Other properties ...] } -
Table SpecificTransaction(继承自 Transaction)
[Serializable] [Table("SpecificTransaction", Schema = "dbo")] public class SpecificTransaction : Transaction { [StringLength(255)] public string UniqueValue { get; set; } [StringLength(50)] public string Status { get; set; } [StringLength(50)] public string Hash { get; set; } [... Other properties ...] }
创建数据库时,在我的表 SpecificTransaction 上添加了一个不需要的字段(即列),称为“Statement_IdStatement”。
当我尝试添加包含SpecificTransactions 的语句时,以下列都没有:
- 表事务 > 列 IdStatement
- Table SpecificTransaction > 列 Statement_IdStatement
正在由 IdStatement 填充,我必须在之后添加 Id。
此外,当我在我的表“SpecificTransaction”上分配“IdStatement”时,只填充了“Statement_IdStatement”列,而不是我的表 Statement 的“IdStatement”。
有没有办法:
避免创建“Statement_IdStatement”列并以这种方式保持我的 EF Code First 类? (或者至少,Statement 和 Transaction 表没有变化)
当我添加包含 SpecificTransactions 的 Statements 并保存Changes 时,“Transaction”>“IdStatement”列会自动填充?
提前致谢。
【问题讨论】:
标签: c# entity-framework foreign-keys ef-code-first