返回首页


我为支持泛型根据#liveDB的关系建模试验。这里有一个如何进展偷看。实体
E型实体存储在EntitySetlt; EGT,包装SortedSetlt; EGT,NET 4的新的集合类作为一个平衡二叉树实现。与O(log N)的读取和写入操作。实体需要订购内排序的集合,可以实现使用一个关键属性实现IComparable的或实体本身的执行IComparablelt;的EGT;。这里有三种不同的方式定义的键的一些例子实体:
类别实体有一个名为ID类型的属性IComparablelt; intgt;命名约定将用作键。 "User实体有物业与KeyAttribute标志着。任务实现IComparablelt; Taskgt,所以任务对象将被用作键,Id属性将被忽略。任务有一个外键属性的CategoryId, 但注意到实体没有任何出境的对象引用。一个实体可以是聚合的,但必须从一个孤立的其他实体,这意味着没有入站或出站的对象引用。例如,为了实体可以有OrderLine的对象的集合。
这种隔离是很重要的查询。想象之间的N对N的关系上述范畴和任务,其中的类别有anbsp收集任务和任务,具有分类收集。单个任务的查询可能返回数据库中的每个任务和分类!这是一个常见的​​错误初学者。通常情况下,我们处理这个问题返回特定视图引用剥离的对象。我们可以有实例TaskView类表示为一个字符串列表类别。该模型
接下来,创建一个模型和派生从RelationalModel,在构造函数中定义的实体集:{C}
不多怎么回事,真的。CRUD的命令和查询
现在开始你的引擎,你都设置为基本的CRUD类型的命令AddEntityCommandlt; EGT,RemoveEntityCommandlt; EGT;和ReplaceEntityCommandlt; EGT;当然,没有什么是停止您还创建自定义的命令。 EntitySetlt; EGT;实现IEnumerablelt; EGT;男,RGT;实例,因此通常使用lambda表达式或Querylt查询。
这里是AddEntityCommandlt; EGT在行动:

   1:  [TestMethod()]

   2:  public void can_add_entity()

   3:  {

   4:      var engine = Engine.LoadOrCreate<MyRelationalModel>();

   5:              

   6:      //Create the entity you want to insert

   7:      var category = new Category{ Name = "Beverages"};

   8:              

   9:      //Create a generic command

  10:      var addCommand = new AddEntityCommand(category);

  11:   

  12:      //A copy is returned with the the Id assigned

  13:      category = engine.Execute(addCommand);

  14:      int numEntities = engine.Execute( db => db.SetOf<Category>().Count());

  15:      Assert.IsTrue(numEntities == 1);

  16:      engine.Close();

  17:  }

  18:   

  19:   

  20:  [TestMethod()]

  21:  public void added_entity_was_assigned_a_key()

  22:  {

  23:      var engine = Engine.LoadOrCreate<MyRelationalModel>();

  24:      var category = new Category { Name = "Beverages" };

  25:      var addCommand = new AddEntityCommand(category);

  26:      category = engine.Execute(addCommand);

  27:      Assert.IsTrue(category.Id > 0);

  28:      engine.Close();

  29:  }
结论
OK,所以这是不是真正的关系,但它使基本的CRUD,你做你的正确建模。带有CRUD,你不必编写特定面向任务的命令,你可以从查询返回,而无需映射到参考剥离的视图对象实体。

回答