public partial class AdmSite : EntityBase
{
/// <summary>Gets or sets the AdmSiteId. </summary>
[Key]
[DataMember]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("AdmSiteId")]
[Bindable(true, BindingDirection.TwoWay)]
[Editable(true)]
public int AdmSiteId
{
get;
set;
}
. . . [DataMember]
[Bindable(false)]
[Display(AutoGenerateField = false)]
public IbEm.RelatedEntityList<PosTerminal> PosTerminals { get { return null; } }
. . .
}
public partial class PosTerminal : EntityBase
{
#region Data Properties
[Display(AutoGenerateField = false)]
public int PosTerminalId { get; set; }
[Display(AutoGenerateField = false)]
public int AdmSiteId { get; set; }
[IbVal.StringLengthVerifier(MaxValue = 100,
IsRequired = true,
ErrorMessageResourceName = "RequiredString_ValError")]
public string ComputerName { get; set; }
[Display(AutoGenerateField = true,
ResourceType = typeof(PosResources),
ShortName = "PosTerminal_Description_ShortName",
Description = "PosTerminal_Description_Description")]
[IbVal.StringLengthVerifier(MaxValue = 100,
IsRequired = true,
ErrorMessageResourceName = "RequiredString_ValError")]
public string Description { get; set; }
#endregion
#region Navigation
[DataMember]
[Display(AutoGenerateField = false)]
public AdmSite AdmSite { get; set; }
#endregion
}
In the EF Code First Migrations Seed method, I'm creating data like this:
AdmSite co =
new AdmSite
{
AdmSiteId = 1,
GMTOffset = -5,
IsActive = true,
Name = "Central Office",
CreatedDTS = DateTime.Now
};
context.AdmSites.AddOrUpdate(co);
AdmSite siteHighSchool = new AdmSite
{
AdmSiteId = 2,
GMTOffset = -5,
IsActive = true,
Name = "High School",
AdmSiteIdParent = 1,
CreatedDTS = DateTime.Now
};
context.AdmSites.AddOrUpdate(siteHighSchool);
PosTerminal terminal1 = new PosTerminal
{
PosTerminalId = 1,
ComputerName = "esaulsberry7",
Description = "Elton's PC"
};
siteHighSchool.PosTerminals.Add(terminal1);
context.PosTerminals.AddOrUpdate(terminal1);
PosTerminal terminal2 = new PosTerminal
{
PosTerminalId = 2,
ComputerName = "kgandy7",
Description = "Kevin's Machine"
};
siteHighSchool.PosTerminals.Add(terminal2);
context.PosTerminals.AddOrUpdate(terminal2);
This fails with:
Running Seed method.
System.Data.EntityException: Unable to set field/property PosTerminals on entity type Yargo.DataModel.AdmSite. See InnerException for details. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at IdeaBlade.EntityModel.NavigationEntityProperty.UpdateToNavigationProperty(EntityRelation relation)
at IdeaBlade.EntityModel.NavigationEntityProperty.get_RelationLink()
at IdeaBlade.EntityModel.NavigationListEntityProperty`2.GetEntityReference(EntityAspect aspect)
at IdeaBlade.EntityModel.NavigationListEntityProperty`2.GetEntityReference(TInstance instance)
at IdeaBlade.EntityModel.NavigationListEntityProperty`2.<.ctor>b__0(NavigationEntityPropertyGetInterceptorArgs`2 args)
at IdeaBlade.Core.PropertyInterceptor`3.ExecuteActions(TArgs args)
at IdeaBlade.Core.PropertyInterceptor`3.GetValue(TInstance instance, Object context)
at IdeaBlade.EntityModel.NavigationListEntityProperty`2.GetValue(TInstance instance)
at IdeaBlade.EntityModel.NavigationListEntityProperty`2.GetValue(Object instance)
at IdeaBlade.Aop.ProvideEntityAspect.PropertyGetInterceptor(LocationInterceptionArgs args)
at Yargo.DataModel.AdmSite.get_PosTerminals() in :line 0
at lambda_method(Closure , Object )
at System.Data.Objects.Internal.EntityProxyFactory.<>c__DisplayClass5.<CreateBaseGetter>b__4(Object entity)
at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.GetNavigationPropertyValue(RelatedEnd relatedEnd)
--- End of inner exception stack trace ---
at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.GetNavigationPropertyValue(RelatedEnd relatedEnd)
at System.Data.Objects.Internal.EntityWrapper`1.GetNavigationPropertyValue(RelatedEnd relatedEnd)
at System.Data.Objects.EntityEntry.DetectChangesInRelationshipsOfSingleEntity()
at System.Data.Objects.ObjectStateManager.DetectChangesInNavigationProperties(IList`1 entries)
at System.Data.Objects.ObjectStateManager.DetectChanges()
at System.Data.Entity.Internal.InternalContext.DetectChanges(Boolean force)
at System.Data.Entity.Internal.InternalContext.GetStateEntry(Object entity)
at System.Data.Entity.Internal.InternalEntityEntry..ctor(InternalContext internalContext, Object entity)
at System.Data.Entity.DbContext.Entry[TEntity](TEntity entity)
at System.Data.Entity.Migrations.IDbSetExtensions.AddOrUpdate[TEntity](DbSet`1 set, IEnumerable`1 identifyingProperties, TEntity[] entities)
at System.Data.Entity.Migrations.IDbSetExtensions.AddOrUpdate[TEntity](IDbSet`1 set, TEntity[] entities)
at Yargo.DataModel.Migrations.Configuration.Seed(YargoDbContext context) in D:\Yargo\YargoShell\YargoDataModel\Migrations\Configuration.cs:line 113
at System.Data.Entity.Migrations.DbMigrationsConfiguration`1.OnSeed(DbContext context)
at System.Data.Entity.Migrations.DbMigrator.SeedDatabase()
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.SeedDatabase()
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
Unable to set field/property PosTerminals on entity type Yargo.DataModel.AdmSite. See InnerException for details.
Any insight is appreciated.
BTW,
I've also tried:
siteHighSchool.PosTerminals.Add(terminal1);
context.AdmSites.AddOrUpdate(siteHighSchool);
context.PosTerminals.AddOrUpdate(terminal1);
...
Same error