我有以下实体:EF代码第一:非规范化继承类型
Human -Name -Age -Height -Weight
SuperHuman : Human -SuperPower
EF只与Power属性创建超人表,查询时加入到人类表。我想要SuperHumans表中的所有列。
EF 4.1代码首先可以进行配置吗?
我有以下实体:EF代码第一:非规范化继承类型
Human -Name -Age -Height -Weight
SuperHuman : Human -SuperPower
EF只与Power属性创建超人表,查询时加入到人类表。我想要SuperHumans表中的所有列。
EF 4.1代码首先可以进行配置吗?
我只需要配置超人继承的属性映射,像这样:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SuperHuman>().Map(m => m.MapInheritedProperties());
{
做到这一点的一种方法是使关系成为一种关系而不是一种关系。
public class SuperHuman
{
public Human TheHuman { get; set; }
public string SuperPower { get; set; }
}
产生的数据库表应该有人类和超人(只要你没有一个单独的人的表,在这种情况下一个单独的人表将被创建的各个领域,与外国键被加入以将表连接在一起。)
它在实用性上有限,因为它破坏了继承。您可能会找到更好的解决方案。
编辑:你可以做这样的事情:
public class SuperHuman : Human
{
public string Name
{
get { return base.Name; }
set { base.Name = value; }
}
}
注:这不是测试,未必是最好的解决办法。我只是把它包括在这里作为一个可能的解
不会让人的部分工作?如果这样做不起作用,那么只需查看每个层次表与每个表类型与每个具体表类型(TPH,TPT,TPC)的关系。您目前正在使用TPT并且您需要TPC。
我想要两个不同的实体。 – chief7
哦,我明白了。然后放入部分并继续使用TPT。我相信这应该做到。虽然,公平地说,自从我这样做以来已经有一段时间了:P。让我知道。 – OpticalDelusion
不幸的是,我有一个人类表。我不介意在应用程序中打破继承。好建议。 – chief7
超人有一个人?这听起来非人性化。 – therealmitchconnors