基于控制台应用程序管理员用户选择的静态方法的 DbContext 持久性
DbContext persistence with static method based on console application admin user selection
我有一个 DbContext
class,只要控制台应用程序是 运行.
,我只想在其中设置一次正确的环境连接字符串
public class RPMContext : DbContext {
public RPMContext(string nameOrConnectionString)
:base(nameOrConnectionString) {
}
}
然后用
调用
private RPMContext db = new RPMContext("name=LH_RPMContext");
但是我需要保留一个静态全局方法,这样我就可以指望 运行 控制台应用程序的生命周期持续存在,它不会消失
我有一个这样的菜单系统
Console.WriteLine("Select Environment:\n");
Console.WriteLine("1. Localhost");
Console.WriteLine("2. DEV");
Console.WriteLine("3. QA");
Console.WriteLine("4. Day 1");
Console.WriteLine("5. Production\n");
Console.Write("Number: ");
byte environment = byte.Parse(Console.ReadLine());
所以我想如果用户选择 2
即 "DEV" 那么
var dev_db = new RPMContext("name=DEV_RPMContext");
然而,稍后当我使用 Entity Framework 进行各种 CRUD 操作时,我会想再次实例化它……因此我只想将该值保存在内存中,对吗?
所以也许一些 enum
具有这些值,例如 DEV_RPMContext
然后设置它?
这是我的另一个问题:
一种选择是像这样编辑您的 DbContext 模板:
public class RPMContext : DbContext {
public static string DefaultConnectionString;
public RPMContext():base(DefaultConnectionString) {
}
public RPMContext(string nameOrConnectionString)
:base(nameOrConnectionString) {
}
}
然后在做出选择时,分配选定的连接字符串:
RPMContext.DefaultConnectionString = "your connection string";
然后像往常一样实例化上下文:
using (var ctx = new RPMContext()) {
// uses default connection string here
}
我有一个 DbContext
class,只要控制台应用程序是 运行.
public class RPMContext : DbContext {
public RPMContext(string nameOrConnectionString)
:base(nameOrConnectionString) {
}
}
然后用
调用 private RPMContext db = new RPMContext("name=LH_RPMContext");
但是我需要保留一个静态全局方法,这样我就可以指望 运行 控制台应用程序的生命周期持续存在,它不会消失
我有一个这样的菜单系统
Console.WriteLine("Select Environment:\n");
Console.WriteLine("1. Localhost");
Console.WriteLine("2. DEV");
Console.WriteLine("3. QA");
Console.WriteLine("4. Day 1");
Console.WriteLine("5. Production\n");
Console.Write("Number: ");
byte environment = byte.Parse(Console.ReadLine());
所以我想如果用户选择 2
即 "DEV" 那么
var dev_db = new RPMContext("name=DEV_RPMContext");
然而,稍后当我使用 Entity Framework 进行各种 CRUD 操作时,我会想再次实例化它……因此我只想将该值保存在内存中,对吗?
所以也许一些 enum
具有这些值,例如 DEV_RPMContext
然后设置它?
这是我的另一个问题:
一种选择是像这样编辑您的 DbContext 模板:
public class RPMContext : DbContext {
public static string DefaultConnectionString;
public RPMContext():base(DefaultConnectionString) {
}
public RPMContext(string nameOrConnectionString)
:base(nameOrConnectionString) {
}
}
然后在做出选择时,分配选定的连接字符串:
RPMContext.DefaultConnectionString = "your connection string";
然后像往常一样实例化上下文:
using (var ctx = new RPMContext()) {
// uses default connection string here
}