![](/img/trans.png)
[英]EF6: “entity types cannot share table” error without any table splitting
[英]Entity Types Cannot Share the same table (EF6) (One to Many Relationship)
无论我如何尝试配置,都会出现此错误。 我试图使用 EF6 建立一对多关系(一个历史数据到多个跟踪数据)并手动设计具有该关系的表。
这是表格设计:
如图所示,历史跟踪表有一列引用历史表中的 id 并生成外键。
这是历史表 class:
[Table("trx_history_forecast_tracking")]
public class TrxHistoryForecast
{
public TrxHistoryForecast()
{
this.Tracking = new HashSet<TrxHistoryForecastTracking>();
}
[Key]
[Column("id")]
[Display(Name = "Id")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
[Column("trx_id")]
[Display(Name = "Transaction ID")]
public string TransactonID { get; set; }
[Column("current_activity")]
[Display(Name = "Current Activity")]
public string CurrentActivity { get; set; }
[Column("send_date")]
[Display(Name = "Send Date")]
public DateTime SendDate { get; set; }
[Column("user_create")]
[Display(Name = "User Create")]
public string UserCreate { get; set; }
[Column("user_modify")]
[Display(Name = "User Modified")]
public string UserModified { get; set; }
[Column("create_date")]
[Display(Name = "Create Date")]
public DateTime CreateDate { get; set; }
[Column("modified_date")]
[Display(Name = "Modified Date")]
public DateTime? ModifyDate { get; set; }
public ICollection<TrxHistoryForecastTracking> Tracking { get; set; }
}
这是跟踪 class:
[Table("trx_history_forecast_tracking")]
public partial class TrxHistoryForecastTracking
{
[Key]
[Column("id")]
[Display(Name = "Id")]
public int Id { get; set; }
[Column("activity_name")]
[Display(Name = "Activity Name")]
public string ActivityName { get; set; }
[Column("activity_finish_date")]
[Display(Name = "Activity Finish Date")]
public DateTime ActivityFinishDate { get; set; }
[Column("activity_user")]
[Display(Name = "Activity User")]
public string ActivityUser { get; set; }
[Column("activity_action")]
[Display(Name = "Activity Action")]
public string ActivityAction { get; set; }
[Column("user_create")]
[Display(Name = "User Create")]
public string UserCreate { get; set; }
[Column("create_date")]
[Display(Name = "Create Date")]
public DateTime CreateDate { get; set; }
public virtual TrxHistoryForecast HistoryForecast { get; set; }
}
但是,当我尝试调试时,出现此错误:
System.InvalidOperationException:“实体类型‘TrxHistoryForecastTracking’和‘TrxHistoryForecast’不能共享表‘trx_history_forecast_tracking’,因为它们不在同一类型层次结构中,或者不具有有效的一对一外键关系以及它们之间匹配的主键。”
知道如何解决吗?
乍一看,我认为您需要 TrxHistoryForecastTracking 中的外键
public partial class TrxHistoryForecastTracking
{
.... the other properties/columns here....
[Column(trx_history_forecast_tracking_id)]
[ForeignKey("HistoryForecast ")]
public int TrxHistoryForecastId { get; set; }
public virtual TrxHistoryForecast HistoryForecast { get; set; }
}
这样,将在表trx_history_forecast_tracking
中创建一个外键列。 此外, TrxHistoryForecast
class 上的表属性应具有值[Table("trx_history_forecast")]
,即没有_tracking
后缀。 现在您正在尝试创建两个指向同一个数据库表的实体类。 您实际上需要将 map 实体类添加到数据库中的两个不同表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.