【发布时间】:2019-03-12 18:45:42
【问题描述】:
我是新来的(而且还是新手编码),很抱歉,如果我问错或愚蠢...... 我正在尝试阅读 Troelsen 的书 Pro C# 7 with .NET and .NET Core,但我停留在第 29 章的开头。 主要目标是创建一个 ASP.NET MVC(名为 CarLotMVC)解决方案。正如书中所说,我创建了 ASP 项目,然后我尝试插入另外两个项目(AutoLotDAL 和 AutoLotDAL.Models)。 我做的和书中写的完全一样,但是当我尝试向 ASP 项目添加一个新的控制器时,我看不到上下文,只能看到 ASP 项目的模型类。 我下载了源代码,将 AutoLotDAL 和 AutoLotDAL.Models 项目添加到解决方案中,修改了连接字符串、命名空间,但仍然看不到上下文或模型类。
Scaffolds menu - missing models
可能出了什么问题?在 AutoLotDAL 项目中有迁移类,我试图删除数据库并再次创建,但这并没有帮助。尝试使用管理员运行 Visual Studio,清理解决方案并重新构建。我只看到过一次上下文,解决方案中有多个错误,VS 在没有我帮助的情况下创建了 Controller 类,但是当我稍后重新打开时,解决方案全部消失了。
这是上下文:
public partial class AutoLotEntities : DbContext
{
public AutoLotEntities()
: base("name=AutoLot")
{
}
protected override void Dispose(bool disposing)
{
}
private void OnSavingChanges(object sender, EventArgs eventArgs)
{
var context = sender as ObjectContext;
if (context == null) return;
foreach (ObjectStateEntry item in
context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified | EntityState.Added))
{
if ((item.Entity as Inventory) != null)
{
var entity = (Inventory)item.Entity;
if (entity.Color == "Red")
{
item.RejectPropertyChanges(nameof(entity.Color));
}
}
}
}
private void OnObjectMaterialized(object sender, ObjectMaterializedEventArgs e)
{
}
public virtual DbSet<CreditRisk> CreditRisks { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Inventory> Cars { get; set; }
public virtual DbSet<Order> Orders { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Inventory>()
.HasMany(e => e.Orders)
.WithRequired(e => e.Car)
.WillCascadeOnDelete(false);
}
}
这是连接字符串:
<connectionStrings> <add name="AutoLot" connectionString="data source=(local)\SQLEXPRESS;initial catalog=AutoLot;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> </connectionStrings>
我正在使用 VS Community 2017、.NET Framework 4.6.1、EF 6.2.0,更新了所有 NuGet 包。但是还是无法重现书中的解决方案……请帮忙。
参考文献列表: References branch
【问题讨论】:
-
所以目标是在控制器内部使用您的
AutoLotEntities? -
AutoLotEntities 将是上下文类,我必须创建一个控制器类 InventoryController,但我不能选择模型类,也不能选择上下文类。
-
同样的问题。在不同的课程中读过这本书 3 遍。 3个月前的那一章没有问题,但现在它不起作用。有些东西改变了。不确定是什么。下载的代码工作正常,但单步执行说明不再有效。
标签: c# asp.net asp.net-mvc entity-framework