小编Bab*_*pil的帖子

使用多个dbcontext实例和依赖项注入

这是几周前我在这里提出的一个类似的问题,其中一个重要的变化需求.

我有一个新的和独特的(我在stackoverflow搜索中找不到这样的东西)业务要求:

我创建了两个独立的实体框架6 DbContexts,指向两个结构不同的数据库,让我们称它们为PcMaster和PcSubs.虽然PcMaster是一个直接的数据库,而PcMasterContext将有一个静态连接字符串,但PcSubs数据库用作模板来创建新的数据库.显然,由于这些复制的数据库将具有相同的确切结构,因此想法只是在实例化dbcontext时将连接字符串中的数据库(目录)名称更改为指向不同的数据库.我还使用了存储库模式和依赖注入(目前是Ninject,但考虑转向Autofac).

我没有看到DbContext的IDbContext接口,除非你想自己创建一个.但后来,我看到很多人说这不是一个好主意或不是最好的做法.

基本上,我想要做的是,在某些条件下,不仅应用程序需要在PCMasterContext和PCSubsContext之间切换,而且如果PCSubsContext是当前上下文,还要将连接字符串修改为PCSubsContext.我在存储库中使用的dbContext需要指向不同的数据库.我不知道如何使用像Ninject或Autofac这样的IoC容器来做到这一点.这是我到目前为止创建的一些代码片段.非常感谢帮助一些真正的工作解决方案.

这是我的基础存储库的界面

public interface IPCRepositoryBase<T> where T : class
{
  void Add(T entity);
  void Delete(T entity);
  T FindOne(Expression<Func<T, bool>> predicate);
  IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
  IQueryable<T> GetAll();
  void SetConnection(string connString);
  //... 
  //...
}
Run Code Online (Sandbox Code Playgroud)

这是我的抽象存储库库

public abstract class PCRepositoryBase<T> : IPCRepositoryBase<T>, IDisposable where T : class
{
  protected readonly IDbSet<T> dbSet;
  protected DbContext dbCtx;

  public PCRepositoryBase(DbContext dbCtx)
  {
     this.dbCtx = dbCtx;
     dbSet = dbCtx.Set<T>();
  }
  public void SetConnection(string connString)
  {
     dbCtx.Database.Connection.ConnectionString = connString;
  }
  public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ninject autofac dbcontext

8
推荐指数
1
解决办法
6997
查看次数

Xamarin.Forms Visual Studio 2017项目未部署

我是Xamarin的新手.我使用Xamarin.Forms模板在Visual Studio 2017中创建了一个示例移动解决方案.该过程创建了四个项目Xamarin PCL,Xamarin Android,Xamarin.iOS和Xamarin.UWP.在不对生成的解决方案进行任何修改的情况下,我正在尝试运行它.

第一个问题是,当我将UWP设置为启动项目时,Windows模拟器会显示并完美地运行应用程序.但是当我尝试对Android做同样的事情时,我会根据我所做的环境变化在不同的时间获得不同的错误.最后,使用visual studio android模拟器,Phone UI显示但不是我的应用程序.在后台我可以看到Visual Studio成功完成了构建过程而没有任何错误,但部署过程只是挂起.我让部署一夜之间运行,但仍然在早上运行.这是我的环境.

  1. 英特尔i7处理器
  2. 在BIOS中启用虚拟技术
  3. Windows 10教育
  4. 32GB RAM
  5. Windows中的Hyper-V已禁用
  6. 在命令窗口中执行"bcdedit/set hypervisorlaunchtype off"并重新启动.

我尝试以不同的组合设置上述环境,但似乎没有一个使应用程序正常工作.当我从android sdk使用android模拟器时,构建过程会抛出错误.甚至构建的唯一模拟器是visual studio模拟器.但部署挂起了.

我的第二个问题是,我已经为版本24和25安装了android SDK.但是在模拟器下拉列表中,我只能看到23的模拟器.我在visual studio和android sdk manager中检查了安装路径,他们都指向到同一个安装文件夹.我需要什么才能使版本24和25的仿真器可用?

我再说一遍,在运行它之前,我没有对visual studio中生成的解决方案进行任何更改.我过去三天一直在这里,但无法使它发挥作用.请帮忙.

android xamarin.forms visual-studio-2017

6
推荐指数
2
解决办法
8235
查看次数