【发布时间】:2016-10-16 09:58:41
【问题描述】:
我正在使用 EntityFramework CodeFirst,我想创建我的模型和 ViewMode 的类,以编程方式。所以我使用C# CodeDom 创建模型和视图模型类。我可以通过相同的命名空间在cs文件中创建它们......就像你在下面看到的那样,我在dbContext......中添加了我的类命名空间,它非常有效!。
public class MyDBContext : DbContext
{
public MyDBContext() : base("MyCon")
{
Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
var theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "FullDynamicWepApp.Data.Domins")
.ToList();
foreach (var item in theList)
{
entityMethod.MakeGenericMethod(item)
.Invoke(modelBuilder, new object[] { });
}
base.OnModelCreating(modelBuilder);
}
}
next ...当我以编程方式完成添加 cs 类时(通过 C# CodeDOM)我必须重建我的项目以用于 include 将新的 cs 文件放入我的项目中......所以我以这样的方式以编程方式构建了我的项目:
if (ProjectCollection.GlobalProjectCollection.GetLoadedProjects(@"D:\imanSal\SmlpeApp\SmlpeApp\SmlpeApp.csproj").Count == 0)
{
p = new Microsoft.Build.Evaluation.Project(@"D:\imanSal\SmlpeApp\SmlpeApp\SmlpeApp.csproj");
}
else
{
p = ProjectCollection.GlobalProjectCollection.GetLoadedProjects(@"D:\imanSal\SmlpeApp\SmlpeApp\SmlpeApp.csproj").First();
}
p.RemoveItem(BuildProj.GetProjectItem(p, outputFileName + this.ClassName + ".cs"));
p.Save();
p.Build();
但我的问题是:我无法使用我的新课程(ViewModels 和Models...),直到我停止并再次运行我的项目。这是我寻找解决方案的最后一个问题,一个多星期了:(我还没有找到任何解决方案。我必须做什么?如何在运行时创建一个类并使用它在运行时...无需再次“停止并运行”我的项目!?
【问题讨论】:
-
这和你的这个问题有什么不同? stackoverflow.com/questions/40055606/…
-
其实我需要答案。不是督察
标签: c# asp.net asp.net-mvc entity-framework codedom