我正在使用Entity Framework 6和Code-First方法,我希望将两个实体放在同一个表中.我究竟做错了什么?
[Table("Review")]
public class Review
{
public int Id { get; set; }
public PictureInfo PictureInfo { get; set; }
public int PictureInfoId { get; set; }
}
[Table("Review")]
public class PictureInfo
{
[Key, ForeignKey("Review")]
public int ReviewId { get; set; }
public Review Review { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误:实体类型'PictureInfo'和'Review'不能共享表'Review',因为它们不在同一类型层次结构中,或者没有有效的一对一外键关系,它们之间具有匹配的主键.
我究竟做错了什么?
我无法理解如何将不同的活动拆分和计算到不同的列中.这是开始表:
+------------+---------+
| CustomerID |Activity |
+------------+---------+
| 1 | Click |
| 1 | View |
| 1 | Inquiry |
| 2 | Click |
| 2 | View |
| 3 | Click |
| 3 | Click |
+------------+---------+
Run Code Online (Sandbox Code Playgroud)
我希望能够将其转换为:
+------------+------+-------+---------+
| CustomerID | View | Click | Inquiry |
+------------+------+-------+---------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 0 |
| 3 | 0 | 2 | …Run Code Online (Sandbox Code Playgroud) 问题
我正在尝试按照我之前的问题使用表拆分来共享大约 7 个实体的大表(200+字段)。
EF6 不仅需要从主模型到子模型的导航属性,还需要所有子模型之间的导航属性(这很糟糕)。
手动解决
这可以手动完成:
public class Franchise
{
[Key]
public int Id { get; set; }
public virtual FranchiseEntity Entity { get; set; }
public virtual FranchiseMiscellaneous Miscellaneous { get; set; }
}
[Table("Franchise")]
public class FranchiseEntity
{
[Key]
public int Id { get; set; }
public virtual FranchiseEntity Entity { get; set; } // Ignored, but relevant when inheritance involved, below...
public virtual FranchiseMiscellaneous Miscellaneous { get; set; }
}
[Table("Franchise")]
public class …Run Code Online (Sandbox Code Playgroud) inheritance domain-driven-design entity-framework shared-primary-key table-splitting