- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据 http://www.schema.org 上定义的实体构建一个实体模型和数据库。使用 Code First 和迁移。底线是所有实体都继承自实体“事物”。
迁移会构建数据库,但任何对数据库进行种子设定的尝试都会失败。
一切都继承自 Thing:
namespace Entities.Models
{
public class Thing
{
public Thing()
{
Id = Guid.NewGuid();
Name = String.Empty;
}
public Guid Id { get; set; }
public virtual string Name { get; set; }
}
public class Person : Thing
{
public Person()
: base()
{
Friends = new List<Person>();
}
public string GivenName { get; set; }
public string FamilyName { get; set; }
public string Email { get; set; }
public virtual ICollection<Person> Friends { get; set; }
}
public class Event : Thing
{
public Event()
: base()
{
Attendees = new List<Person>();
}
public virtual ICollection<Person> Attendees { get; set; }
public TimeSpan Duration { get; set; }
public DateTime? endDate { get; set; }
public DateTime? StartDate { get; set; }
}
public class ThingMap : EntityTypeConfiguration<Thing>
{
public ThingMap()
{
// Primary Key
this.Property(t => t.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
// Properties
this.Property(t => t.Name)
.IsOptional()
.HasMaxLength(200);
// Table & Column Mappings
this.ToTable("entity_Thing");
}
}
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
// Properties
this.Map<Person>(t =>
{
t.MapInheritedProperties();
t.ToTable("entity_Person");
});
// Table & Column Mappings
}
}
public class EventMap : EntityTypeConfiguration<Event>
{
public EventMap()
{
// Properties
this.Map<Event>(t =>
{
t.MapInheritedProperties();
t.ToTable("entity_Event");
});
// Table & Column Mappings
}
}
public class CitriusSpotsContext : DbContext
{
static CitriusSpotsContext()
{
Database.SetInitializer<CitriusSpotsContext>(null);
}
public CitriusSpotsContext()
: base("Name=CitriusSpotsContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ThingMap());
modelBuilder.Configurations.Add(new PersonMap());
modelBuilder.Configurations.Add(new EventMap());
}
public DbSet<Thing> Things { get; set; }
public DbSet<Person> People { get; set; }
public DbSet<Event> Events { get; set; }
}
}
最佳答案
我目前正在使用类似的模型,我知道这个答案很晚,但它可能会有所帮助。
首先,TPH、TPT 和 TPC 是在我们的数据库中建模继承的机制。如果我们不需要为多态查询、更新或保存建模继承,我们不需要遵循 TP* 约定。
让我重申一下。 TPH、TPT 和 TPC 是可选的数据库继承建模策略。如果我们的应用程序不需要多态查询、更新或插入,我们不需要遵循 TP* 约定。
我的基本项目设置与您的非常相似。在我的项目中,我有一个抽象类,项目中的每个类都继承自该类。它被命名为XModelBase
我相信它对应于您的Thing
类(class)。
我使用这个抽象类来实现一些将我的 biz 规则验证连接到 Entity Framework 的验证机制的基本方法。该类还确保为每个实体捕获审计值,并且该类包含其他通用属性 (KeyId),并为通用流程提供原型(prototype)/模板。
我们的模型之间唯一真正的区别是我的 XModelBase
有一个 int
当您使用 Guid
时,作为主键(所有类随后继承)的数据类型主键的数据类型。
如果我是正确的,您和我将永远不需要执行如下查询:
场景一:
var query = from t in context.Things select t;
var person = new Person() {Email = "something@somewhere.com"};
context.Things.Add(person);
var person = new Person() {Email = "something@somewhere.com"};
context.People.Add(person);
Scenario 1
或
Scenario 2
, 我们不需要
Things
成为一个单独的基表(TPT)。我们也不需要或不想以 TPC 的不可见多态方式访问或保存我们的子类表;因此,当您考虑它时,我们真的永远不需要以下属性:
public DbSet<Thing> Things { get; set; }
MapInheritedProperties()
从我们的子类模型配置中,因为继承的属性将自动映射。我们只是离开我们的
.ToTable
指定我们的子类对象。
int
对于我的
XModelBase
基类主键,所以我可以简单地用
[Key]
标记它属性如:
[Key]
public int KeyId { get; set; }
DbSet
对于我的
XModelBase
类,所有继承的子类都将具有独立的自动递增主键,这些主键配置为
[Key]
我的
XModelBase
中的属性类(class)。
关于asp.net-mvc - Entity Framework TPC 继承(现在请拍我),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14022522/
我对不同类型的 TPC 基准感到困惑。 TPC-C、TPC-E 和 TPC-H 基准测试之间的主要区别是什么? 最佳答案 TPC-C(大约 1992 年)模拟了一个“老式”OLTP 应用程序,它看起来
除了 TPC-H 之外还有哪些常见的基准测试?和 TPC-DS ,涉及许多大fact tables和多个 joins在他们之上? 最佳答案 不确定这个问题是否与 Stackoverflow 相关,但我
我在使用 C# Entity Framework Codefirst 和 Fluent Api 的 TPC 继承方面遇到了一个奇怪的问题。我有 3 个名为 Person 的类, Invoice和 Pe
本文分享自华为云社区《GaussDB(DWS) 《DWS之TPCD-DS&TPC-H与查询性能的那些事儿》》,作者: 一剑战八荒 。 1 综述 本文目标在于,详细讲述使用GaussDB(DWS)时,如
我在多个地方读到,根据基准数据验证您的代码总是好的。 我的问题是如何以及从何处获取基准数据? 我需要TPC-H基准测试数据,也访问了http://www.tpc.org/tpch/ , 但不明白如何获
有人知道 TPC-H 模式吗?我尝试编译但有一些错误。 我需要 sql 模式文件。如果可能,还有数据 sql 文件。 谢谢 最佳答案 TPC-H 有一个生成数据库的 DBGEN。 您可以在 : htt
所以我实现了每个具体类的表来处理继承层次结构,但我在导航属性方面遇到了问题。 我的模型结构如下: 我有一个抽象的 BaseEntity 类,有多个派生类,所以: public abstract cla
我对 SSD 驱动器感兴趣已有一段时间了。我做了很多与数据库有关的工作,并且我一直非常有兴趣找到基准测试,例如使用和不使用 SSD 驱动器执行的 TPC-H。 在外面听起来好像会有一个,但遗憾的是我没
我尝试使用 TPC 样式的 Entity Framework 映射一些类,但出现以下错误: Error: The type 'A' cannot be mapped as defined becaus
好的,当我尝试按如下方式指定连接表的名称时, Entity Framework 遇到了一些问题: // Used by a bunch of things... public abstract Bas
我有 2 个对象,我想将它们分别存储在 2 个不同的表中。我们将类称为 Foo 和 FooTemp。 我正在使用 Table Per Concrete Type (TPC) 继承,因为我希望类 Foo
我正在尝试在 EF 4.4 上实现 TPC 设计。 我有一组已经映射到现有表的类,并添加了一组具有相同结构的类,这些类将映射到不同的表,具有不相交的 ID。 所以这几乎是旧类的新设计(没有我要添加的新
有没有人用DBGEN TPC-H这个工具生成了一个非常大的百万条记录的表?有人推荐了,但只给了我the url . 该软件是 DBGEN,它是一个 C 语言程序,可以生成可以导入 DBMS 的文本文件
我最近将我的机器从 PostgreSQL8.3 升级到 PostgreSQL9.3.4。升级后,当我运行 TPC-H 查询进行性能测试时,我可以看到时间发生了巨大变化。特别是在 pgsql8.3 中执
我在 Ubuntu Linux 服务器上运行 Pyramid ,在尝试使用 pyramid_mailer 时遇到了 ValueError。我的代码比较简单,似乎任何东西都会导致它: def my_vi
好吧,可能这个问题之前已经回答过,但我一直在研究,但我找不到解决我的具体问题的方法 Code of this sample - Visual Studio 2012 - Console App 所以我
我们正在通过 创建 EntityFramework CodeFirst DAL遗产 数据库(这意味着我们大多被它所存在的任何设计错误所困扰)。 领域模型(非常)简单:我们有抽象 Card,子类型为 H
我正在尝试根据 http://www.schema.org 上定义的实体构建一个实体模型和数据库。使用 Code First 和迁移。底线是所有实体都继承自实体“事物”。 迁移会构建数据库,但任何对数
我有相互继承的模型,但我正在努力让流畅的 api 配置按照我想要的方式运行。假设我有一个定义了一些核心属性的基类 public class Entity { public int Id { ge
为了避免使用每层次结构表 (TPH),我一直在研究如何在我的数据库模型中最好地实现每个具体类表 (TPC) 继承的示例。我遇到了 official documentation和 this articl
我是一名优秀的程序员,十分优秀!