实体框架项目和存储库

时间:2013-07-30 19:56:28

标签: c# entity-framework repository unit-of-work

我想用几层创建到我的数据库的访问层。

  1. 项目图层。这有点像auth,使用这个层你可以访问DB中的所有对象,更改/创建/删除拥有,你不能删除/更改另一个Project的数据。我想在我需要共享和身份验证的所有表格中通过projectID在数据库中实现它,但我不确定如何在EF图层中实现它,下面是一些代码段。但是,如果DBSet与当前和实现方法(如projectID等)不同,那么如何创建会引发异常的自定义GetAllFiles(int ProjectId)?我认为我的Project是常见的UnitOfWork模式,但我无法理解如何正确使用它。

    public class MyContext : DbContext
    {
        const int _projectID;
        public MyContext (DbContext sharedContext, int projectID)
            : base(sharedContext)
            , _projectID(projectID)
        {
            Database.SetInitializer<MyContext>(null);
        }
    
        public DbSet<SharedElements> SharedElements { get; set; }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new SharedElements(_projectID));
        }
    }
    
  2. 如何在所有应用程序模块之间共享项目ID(具有UI的应用程序并大量使用MEF)。我想创建类WorkspaceProject,我将存储projectID,在构造函数中,如果此项目是“正在创建”,我将在数据库中创建一些数据,或者如果它正在打开则从数据中检索一些信息”。

  3. 库。我真的需要一个非常灵活的存储库来保存我的数据中的所有更改。我想使用现有的impl。这种模式,也许this,不确定。你能提出一些建议吗?

  4. 最后,我希望能够访问数据库,例如路径为ProjectFileNameEntity的磁盘上的文件,我可以创建新目录(Projects )和Open / Save / Create / Delete个文件(Entities)。我并不是指通过字符串访问数据库中的数据。

    此外,我不需要数据库中的数据与我程序中的数据之间的对话,因为存储在数据库中的所有数据都是服务器上文件的路径(我在SQL Server中不使用FileStream

0 个答案:

没有答案