私はEF7を初めて使い、奇妙な問題に遭遇しています。派生型のキー...しかしそれはありません
public class Site
{
public int ID { get; set; }
public string Title { get; set; }
public string HouseNumber { get; set; }
public string StreetName { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zipcode { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public DataSource Source { get; set; }
public object Parameters
{
get
{
switch(Source)
{
case DataSource.StealthStats:
return JsonConvert.DeserializeObject<StealthStatsParameters>(JSONParameters);
default:
throw new Exception("Site::Parameters::get() - Unhandled DataSource " + Source.ToString());
}
}
set
{
switch(Source)
{
case DataSource.StealthStats:
JSONParameters = JsonConvert.SerializeObject(value);
break;
default:
throw new Exception("Site::Parameters::set() - Unhandled DataSource " + Source.ToString());
}
}
}
protected string JSONParameters { get; set; }
public List<Observation> Observations { get; set; }
}
とコンテキストのOnModelCreatingでこのロジック():私はこのクラスの持っている
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
builder.Entity<Site>()
.HasKey(t => t.ID);
builder.Entity<Site>()
.Property(s => s.City)
.IsRequired();
builder.Entity<Site>()
.Property(s => s.HouseNumber)
.IsRequired();
builder.Entity<Site>()
.Property(s => s.Source)
.IsRequired();
builder.Entity<Site>()
.Property(s => s.State)
.IsRequired()
.HasMaxLength(2);
builder.Entity<Site>()
.Property(s => s.StreetName)
.IsRequired();
builder.Entity<Site>()
.Property(s => s.Title)
.IsRequired();
builder.Entity<Site>()
.Property(s => s.Zipcode)
.IsRequired()
.HasMaxLength(10);
builder.Entity<Observation>()
.HasKey(t => new { t.SiteID, t.TimeStamp });
builder.Entity<Observation>()
.HasOne(o => o.Site)
.WithMany(s => s.Observations);
}
をしかし、私はマイグレーションが追加DNX EFを実行したとき、私はこのエラーメッセージが出ます:
を派生型 'SpeedView.Models.Site'は、ルート型で宣言されたもの以外のキーを持つことはできません。
ただし、私が見る限り、サイトは何に由来するものでもありません。
ところで、ここで重要なの場合には、クラスの観察のための定義です:余談として
public class Observation
{
public int SiteID { get; set; }
public DateTime TimeStamp { get; set; }
public int MPH { get; set; }
public int VehicleCount { get; set; }
public virtual Site Site { get; set; }
}
を、誰もが私はそれを感謝良いチュートリアルやEF7の説明へのリンクをお勧めすることができます。私はEFで何年も働いた後、非常に険しく、私がオンラインで見つけたものはあまり役に立ちません。