我想用几层创建到我的数据库的访问层。
项目图层。这有点像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));
}
}
如何在所有应用程序模块之间共享项目ID(具有UI的应用程序并大量使用MEF
)。我想创建类WorkspaceProject
,我将存储projectID
,在构造函数中,如果此项目是“正在创建”,我将在数据库中创建一些数据,或者如果它正在打开则从数据中检索一些信息”。
库。我真的需要一个非常灵活的存储库来保存我的数据中的所有更改。我想使用现有的impl。这种模式,也许this,不确定。你能提出一些建议吗?
最后,我希望能够访问数据库,例如路径为Project
且FileName
为Entity
的磁盘上的文件,我可以创建新目录(Projects
)和Open
/ Save
/ Create
/ Delete
个文件(Entities
)。我并不是指通过字符串访问数据库中的数据。
此外,我不需要数据库中的数据与我程序中的数据之间的对话,因为存储在数据库中的所有数据都是服务器上文件的路径(我在SQL Server中不使用FileStream
)