我有一个 MVC4/Web API 项目,带有一个实体框架,代码优先数据模型。当我尝试使用数据上下文和模型创建具有读/写方法的新 API 控制器时,我收到一条警报,提示“对象引用未设置为对象的实例”。
我做了一些搜索,发现某些原因是 .csproj 文件中的项目类型 Guid 不正确,MvcScaffolding nuget 包的安装不完整以及安装 Powershell 3 的建议。
我确保我所有的项目类型 guid 都是正确的,确保 MvcScaffolding 包安装正确,我什至安装了 Powershell 3。
这些都没有为我解决问题。我能想到的只是我的数据上下文/模型存在问题,尽管它可以很好地创建表/关系。下面的代码:
语境:
public class PropertySearchContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Property>().HasRequired(p => p.Office).WithMany(o => o.Properties).HasForeignKey(p => p.OfficeId);
}
public DbSet<Office> Offices { get; set; }
public DbSet<Property> Properties { get; set; }
}
模型:
[Serializable]
public class Property
{
public int PropertyId { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Town { get; set; }
public string County { get; set; }
public string Postcode { get; set; }
public int Bedrooms { get; set; }
public int Bathrooms { get; set; }
public string UmbracoNodeId { get; set; }
public string MainImageUrl { get; set; }
public string ListingImageUrl { get; set; }
public int TotalImageCount { get; set; }
public PropertyType PropertyType { get; set; }
public PropertyStatus PropertyStatus { get; set; }
public long Price { get; set; }
public string ListingUrl { get; set; }
//Navigation Properties
public int OfficeId { get; set; }
public virtual Office Office { get; set; }
//Meta properties
public DateTime CreatedAt { get; set; }
public string CreatedBy { get; set; }
public DateTime UpdatedAt { get; set; }
public string UpdatedBy { get; set; }
}
连接字符串:
<add name="PropertySearchContext" connectionString="Data Source=MERCURY\SQLEXPRESS;Initial Catalog=DATABASE_NAME;Integrated Security=False;User ID=dbFakeUser;Password=fakePassword;Connect Timeout=10" providerName="System.Data.SqlClient" />
任何对此的帮助将不胜感激,因为我已经尝试了每一个建议,但我仍然无法创建带有脚手架的控制器。快把我逼疯了!
谢谢!