正确的工作流程 - EF

时间:2016-03-16 11:26:05

标签: c# entity-framework

这是一个复杂的问题...

我有一个服务器端应用程序(独立)。通常,此服务器获取客户端连接并为每个客户端创建逻辑层。

我遇到的问题是数据。 逻辑层依赖于项目,每个项目都有一些共同的逻辑流程和许多独特的流程。

我想创建一个核心逻辑类,所有其他项目都可以扩展它们 - 这只是介绍....

数据

使用此数据表的所有项目(单个公用表的示例)

   ItemID     ItemName     State 

所以我可以创建一个DbContext

 public class CoreContext : DbContext  {
       public DbSet<Item> Items { get; set; }
 }   

 public class Item {
      public int ItemID { get; set; }
      public string ItemName { get; set; }
      public int State { get; set; }
}

现在,数据的变化是在创建新的独特项目时。 exmaple项目A也可以有这个表(ItemsAttribute):

   ItemID     AttributeName     AttributeValue

此表只能用于项目A而不能用于项目B.和项目B添加另一个表(ItemsUsers):

   ItemID     UserID      Permission

我尝试扩展CoreContext类,如此

 public class ProjectBContext : CoreContext  {
       public DbSet<ItemsUsers> ItemsUsers { get; set; }
 }  

或扩展模型类,如此

public partial class Item {
       public List<ItemAttributes> Attributes {get;set;}
}

public class ItemAttributes {
       public string AttributeName { get; set; }
       public string AttributeValue { get; set; }
}

CoreContext和ProjectBContext中的每一个都拥有它自己的项目和DLL文件

我不知道什么是更好的做法 - 而且我对一些解决方案感到困惑:

  1. 创建一个可以涵盖我所有项目的大型上下文实体框架类 - 问题是:难以维护和很多迁移问题
  2. 为每个项目创建一个单独的上下文,而不是扩展CoreContext - 问题:不解决模型的添加字段
  3. 离开EF解决方案并回到旧的ADO.NET - 问题:它不是1995年..
  4. 任何建议或反馈都会有所帮助......谢谢!

0 个答案:

没有答案