title: Entity framework Validation errors has no key defined. Define the key for this EntityType
body: <p>I am getting this Entity Framework error when I try to save an object in my Database context.
  I have no idea where to start looking.</p>
  
  <p>What could be happening here?</p>
  
  <p>How can I isolate what the issue is?</p>
  
  <p>Thanks.</p>
  
  <pre><code>{System.Data.Entity.ModelConfiguration.ModelValidationException: One or more validation errors were detected during model generation:
  
  \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'Exception' has no key defined. Define the key for this EntityType.
  \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'AssemblyName' has no key defined. Define the key for this EntityType.
  \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'CultureInfo' has no key defined. Define the key for this EntityType.
  \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'DateTimeFormatInfo' has no key defined. Define the key for this EntityType.
  \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'IdentityReference' has no key defined. Define the key for this EntityType.
  \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'Exceptions' is based on type 'Exception' that has no keys defined.
  \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'AssemblyNames' is based on type 'AssemblyName' that has no keys defined.
  \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'CultureInfoes' is based on type 'CultureInfo' that has no keys defined.
  \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'DateTimeFormatInfoes' is based on type 'DateTimeFormatInfo' that has no keys defined.
  \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'IdentityReferences' is based on type 'IdentityReference' that has no keys defined.
  
     at System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model, XmlWriter writer)
     at System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl(EdmModel model)
     at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
     at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
     at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
     at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
     at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
     at System.Data.Entity.Internal.InternalContext.Initialize()
     at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
     at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
     at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
     at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
     at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
     at System.Data.Entity.DbSet`1.Add(TEntity entity)
     at MVCDaemon.Controllers.AwardBadgesController.FromUnprocessedEvents() in Hobby Stuff\Hehe\Hehe.Daemon\Controllers\AwardBadgesController.cs:line 58}
  </code></pre>
  
  <p>and my other stuff:</p>
  
  <pre><code>DaemonDB.Tasks.Add(T);
  </code></pre>
  
  <p>and</p>
  
  <pre><code>public class DaemonDBContext : DbContext
      {
          public DaemonDBContext() : base("DefaultConnection") { }
  
          //Collections also in BaseDBContext:
          public DbSet&lt;Badge&gt; Badges { get; set; }
          public DbSet&lt;BadgeGroup&gt; BadgeGroups { get; set; }
          public DbSet&lt;Event&gt; Events { get; set; }
  
          //Collections only in DaemonDBContext
          public DbSet&lt;EventCheckedForBadgeReward&gt; EventCheckedForBadgeReward { get; set; }
          public DbSet&lt;Task&gt; Tasks { get; set; }
      }
  </code></pre>
  
  <p>and</p>
  
  <pre><code>public class Task
      {
          public int ID { get; set; }
          public string FriendlyTitle { get; set; }
          public DateTime TimeOfExecution { get; set; }
          public TimeSpan LengthOfExecution { get; set; }
          public Stopwatch StopWatch;
          public Exception ExceptionEncountered { get; set; }
  
          public Task() {
              TimeOfExecution = DateTime.Now;
          }
  
          public void StartStopwatch()
          {
              StopWatch = Stopwatch.StartNew();
              StopWatch.Start();
          }
  
          public void StopStopwatch()
          {
              StopWatch.Stop();
          }
  
          public string GetStatusAsFriendly()
          {
              return ExceptionEncountered == null ? "Success" : "Failed";
          }
      }
  </code></pre>