跟进:每种混凝土类型性能/比例表

时间:2010-05-11 15:48:09

标签: c# entity-framework performance

这是另一个问题的后续/后置问题;因为我发现了一个让我遇到新问题的解决方案。

Classes to Entities; Like-class inheritence problems

我们正在构建这个游戏系统,可以这么说;我正在使用Table Per Concrete Type概念来执行继承建模。

我关心的是可扩展性和性能。我相信我之前使用过类似的技术而且它显得相当迟钝,但我不是一个优秀的DBA,我是一名程序员。所以我对这将如何转换为SQL非常陌生。但基本上在我看来,如此多的“链接”查询一起运行将是缓慢而微弱的。我发布了我的架构和实体模型以供参考。如果我能提供更清晰的信息,请询问,因为我真的不确定与“调整”这种方法有什么关系。

alt text http://img46.imageshack.us/img46/1043/database.png

alt text http://img293.imageshack.us/img293/6454/entities.png

样本使用通常如下;

static void Main(string[] args)
{
    DataContext db = new DataContext();

    Character character = new Character()
    {
        Name = "First",
        Ring = new Mapping.Ring()
    };


    character.Ring.Keys.Add(
        new Random()
        {
            Dice = 2,
            Sides = 30,
        });

    character.Ring.Keys.Add(
        new Measure()
        {
            Maximum = 100,
            Minimum = 0
        });
    character.Ring.Keys.Add(
        new Measure()
        {
            Maximum = 100,
            Minimum = 0
        });

    db.Characters.AddObject(character);
    db.SaveChanges();

    foreach (Character c in db.Characters)
    {
        Console.WriteLine(c.Name);

        Console.WriteLine(new string('-', 80));

        foreach (Measure k in c.Ring.Keys.OfType<Measure>())
            Console.WriteLine(String.Format("{0}/{1}", k.Minimum, k.Maximum));

        foreach (Random k in c.Ring.Keys.OfType<Random>())
            Console.WriteLine(String.Format("{0}d{1}", k.Dice, k.Sides));
    }

    Console.ReadLine();
}

1 个答案:

答案 0 :(得分:1)

我认为这很大程度上取决于数据库的调整方式,表格中的索引以及数据的范围。

为了真正“证明”一个数据模型,我非常喜欢用大量数据填充表格,并查询它,看看会发生什么,这是验证性能的唯一真正方式,或者缺乏申请。