C# 实体类型<;类型>;不是当前上下文的模型的一部分。多重连接字符串?
我正在使用2个连接字符串问题第一个连接正在工作,但当我添加另一个连接字符串时,这是我的错误“实体类型不是当前上下文模型的一部分”。我是这里的新蜜蜂asp.NETMVC5。我被困在这里请帮忙。多谢各位 以下是我的代码2上下文不起作用:C# 实体类型<;类型>;不是当前上下文的模型的一部分。多重连接字符串?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在使用2个连接字符串问题第一个连接正在工作,但当我添加另一个连接字符串时,这是我的错误“实体类型不是当前上下文模型的一部分”。我是这里的新蜜蜂asp.NETMVC5。我被困在这里请帮忙。多谢各位 以下是我的代码2上下文不起作用: public class ChenvelJapanContext : DbContext { public ChenvelJapanContext() : base("name=chenveljapanconnstring") {
public class ChenvelJapanContext : DbContext
{
public ChenvelJapanContext()
: base("name=chenveljapanconnstring")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !string.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType &&
type.BaseType.GetGenericTypeDefinition() == typeof(ChenvelJapanEntityTypeConfiguration<>));
foreach(var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
base.OnModelCreating(modelBuilder);
}
}
public类ChenvelJapanContext:DbContext
{
公共ChenvelJapanContext()
:base(“name=chenveljapanconnstring”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
var typesToRegister=Assembly.getExecutionGassembly().GetTypes()
.Where(type=>!string.IsNullOrEmpty(type.Namespace))
.Where(type=>type.BaseType!=null&&type.BaseType.IsGenericType&&
type.BaseType.GetGenericTypeDefinition()==typeof(ChenvelJapanEntityTypeConfiguration));
foreach(TypeStoreRegister中的变量类型)
{
dynamic configurationInstance=Activator.CreateInstance(类型);
modelBuilder.Configurations.Add(configurationInstance);
}
基于模型创建(modelBuilder);
}
}
第一个环境正在发挥作用:
public class ChenvelIntlContext : DbContext
{
public ChenvelIntlContext()
: base("name=chenvelintlconnstring")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !string.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType &&
type.BaseType.GetGenericTypeDefinition() == typeof(ChenvelIntlEntityTypeConfiguration<>));
foreach(var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
base.OnModelCreating(modelBuilder);
}
}
公共类ChenvelIntlContext:DbContext
{
公共ChenvelIntlContext()
:base(“name=chenvelintlconstring”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
var typesToRegister=Assembly.getExecutionGassembly().GetTypes()
.Where(type=>!string.IsNullOrEmpty(type.Namespace))
.Where(type=>type.BaseType!=null&&type.BaseType.IsGenericType&&
type.BaseType.GetGenericTypeDefinition()==typeof(ChenvelIntlEntityTypeConfiguration));
foreach(TypeStoreRegister中的变量类型)
{
dynamic configurationInstance=Activator.CreateInstance(类型);
modelBuilder.Configurations.Add(configurationInstance);
}
基于模型创建(modelBuilder);
}
}
我的连接字符串:
connectionStrings>
<add name="chenvelintlconnstring" connectionString="data source=server;initial catalog=chenvel_intl;persist security info=True;user id=sa;password=secret;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
<add name="chenveljapanconnstring" connectionString="data source=server;initial catalog=chenvel;persist security info=True;user id=sa;password=secret;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
连接字符串>
应用程序启动
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
kernel.Bind<IUserService>().To<UserService>();
kernel.Bind<IUserInRoleService>().To<UserInRoleService>();
kernel.Bind<IRoleService>().To<RoleService>();
kernel.Bind<IClientService>().To<ClientService>();
kernel.Bind<ICountryService>().To<CountryService>();
kernel.Bind<IStateService>().To<StateService>();
kernel.Bind<ICityService>().To<CityService>();
kernel.Bind<ITownService>().To<TownService>();
kernel.Bind<IPackageService>().To<PackageService>();
kernel.Bind<IOrderService>().To<OrderService>();
kernel.Bind<IRateService>().To<RateService>();
kernel.Bind<IRateItemService>().To<RateItemService>();
kernel.Bind<ICommissionService>().To<CommissionService>();
kernel.Bind<IReceiverService>().To<ReceiverService>();
kernel.Bind<IEmptyBoxService>().To<EmptyBoxService>();
kernel.Bind<ITransactionService>().To<TransactionService>();
kernel.Bind<IShipmentService>().To<ShipmentService>();
kernel.Bind<IShipmentItemService>().To<ShipmentItemService>();
kernel.Bind<IEmployeeService>().To<EmployeeService>();
kernel.Bind<IDesignationService>().To<DesignationService>();
kernel.Bind<IDeliveryService>().To<DeliveryService>();
kernel.Bind<IDeliveryItemService>().To<DeliveryItemService>();
kernel.Bind<IAdditionalChargeService>().To<AdditionalChargeService>();
kernel.Bind<ICSI_DataService>().To<CSI_DataService>();
}
}
公共静态类NinjectWebCommon
{
私有静态只读引导程序Bootstrapper=new Bootstrapper();
///
///启动应用程序
///
公共静态void Start()
{
RegisterModule(typeof(OnePerRequestHttpModule));
RegisterModule(typeof(NinjectHttpModule));
初始化(CreateKernel);
}
///
///停止应用程序。
///
公共静态无效停止()
{
bootstrapper.ShutDown();
}
///
///创建将管理应用程序的内核。
///
///创建的内核。
私有静态IKernel CreateKernel()
{
var kernel=新的标准内核();
尝试
{
kernel.Bind().ToMethod(ctx=>()=>newbootstrapper().kernel);
kernel.Bind().To();
注册服务(内核);
返回内核;
}
抓住
{
Dispose();
投掷;
}
}
///
///在这里加载您的模块或注册您的服务!
///
///内核。
私有静态无效注册服务(IKernel内核)
{
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
}
}
我强烈建议检查配置并检查调用db操作的型号。错误本身表示“实体类型不是当前上下文模型的一部分”,或者提供更多代码进行分析
您可能还需要调试这部分代码
foreach(var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
请给我们您在启动时绑定上下文的代码。你如何解决上下文?通过构造DI或ServiceLocator?@Dmitry抱歉,我不熟悉DI和ServiceLocator,顺便说一下,我已经添加了appstart代码,请检查。感谢您绑定服务(我对Ninject不太熟悉,更喜欢标准的Microsoft DI,但我不明白您为什么要用静态方法绑定它),但是您的
ChenvelIntlContext
和ChenvelJapanContext
绑定在哪里?请关闭此主题我通过添加另一个工作单元来解决问题系统不接受相同的工作单元名称。kernel.Bind().To();