Entity Framework、Code First データ モデルを使用した MVC4/Web API プロジェクトがあります。データ コンテキストとモデルを使用して読み取り/書き込みメソッドを持つ新しい API コントローラーを作成しようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というアラートが表示されます。
少し調べてみたところ、.csproj ファイルのプロジェクト タイプ Guid が正しくない、MvcScaffolding nuget パッケージのインストールが不完全である、Powershell 3 をインストールするという 1 つの提案が原因であることがわかりました。
すべてのプロジェクト タイプ 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" />
私はすべての提案を試しましたが、まだスキャフォールディングを使用してコントローラーを作成できないため、これに関する助けをいただければ幸いです。私を怒らせる!
ありがとう!