Sto lavorando all'impostazione di un nuovo progetto utilizzando Code First per il framework 5 entità in silverlight utilizzando i servizi RIA. Ho creato un progetto di test a causa di alcuni problemi che ho riscontrato e pubblicheremo il codice qui sotto.Codice EF5 Primo e servizi RIA Silverlight "Riferimento oggetto non impostato su un'istanza di un oggetto" errore creazione client
Vale a dire, ottengo un errore 'Riferimento oggetto non impostato su un'istanza di un oggetto' ogni volta che tento di creare il progetto client Silverlight che dovrebbe generare le classi proxy client.
Giusto per essere chiari, questo errore non si verifica durante l'esecuzione o il debug dell'applicazione, ma durante la creazione.
Ho isolato che ciò accada solo se ho delle proprietà di navigazione/chiavi esterne definite sul mio codice Prime classi.
Qualsiasi aiuto stasera sarebbe molto apprezzato.
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? BirthDate { get; set; }
public virtual List<Character> Characters { get; set; }
}
public class Character
{
public int CharacterId { get; set; }
public int PersonId { get; set; }
public virtual Person Person { get; set; }
public string CharacterName { get; set; }
}
public class CharacterDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Character> Characters { get; set; }
public CharacterDbContext()
{
if (HttpContext.Current == null)
{
Database.SetInitializer<CharacterDbContext>(null);
}
}
}
[EnableClientAccess]
public class CharacterDbService : DbDomainService<CharacterDbContext>
{
#region Basic Methods for Person with the context property of Persons
[Query]
public IQueryable<Person> GetPersons()
{
return DbContext.Persons;
}
[Insert]
public void InsertPerson(Person entity)
{
DbEntityEntry<Person> entityEntry = DbContext.Entry(entity);
if (entityEntry.State != EntityState.Detached)
{
entityEntry.State = EntityState.Added;
}
else
{
DbContext.Persons.Add(entity);
}
}
[Update]
public void UpdatePerson(Person entity)
{
DbContext.Persons.AttachAsModified(entity, ChangeSet.GetOriginal(entity), DbContext);
}
[Delete]
public void DeletePerson(Person entity)
{
DbEntityEntry<Person> entityEntry = DbContext.Entry(entity);
if (entityEntry.State != EntityState.Deleted)
{
entityEntry.State = EntityState.Deleted;
}
else
{
DbContext.Persons.Attach(entity);
DbContext.Persons.Remove(entity);
}
}
#endregion
#region Basic Methods for Character with the context property of Characters
[Query]
public IQueryable<Character> GetCharacters()
{
return DbContext.Characters;
}
[Insert]
public void InsertCharacter(Character entity)
{
DbEntityEntry<Character> entityEntry = DbContext.Entry(entity);
if (entityEntry.State != EntityState.Detached)
{
entityEntry.State = EntityState.Added;
}
else
{
DbContext.Characters.Add(entity);
}
}
[Update]
public void UpdateCharacter(Character entity)
{
DbContext.Characters.AttachAsModified(entity, ChangeSet.GetOriginal(entity), DbContext);
}
[Delete]
public void DeleteCharacter(Character entity)
{
DbEntityEntry<Character> entityEntry = DbContext.Entry(entity);
if (entityEntry.State != EntityState.Deleted)
{
entityEntry.State = EntityState.Deleted;
}
else
{
DbContext.Characters.Attach(entity);
DbContext.Characters.Remove(entity);
}
}
#endregion
}
Quale progetto sta causando il problema, il progetto silverlight o il progetto EF? Potete anche verificare che non vi siano file mancanti e SL build senza il vostro link Servizi RIA WCF –
@Rikkos Era il progetto SL, ed è stato costruito correttamente se rimuovo tutte le relazioni dalla mia entità. Vedere la soluzione parziale di seguito. Era una combinazione di problemi nell'usare il TextTemplate nel toolkit unito ad altre soluzioni che avevo già provato. – KitKat