RIAサービスを使用してSilverlightでエンティティフレームワーク5のコードファーストを使用して新しいプロジェクトを設定しています。私は遭遇したいくつかの問題のためにテストプロジェクトを作成し、以下のコードを投稿します。EF5コードファーストとRIAサービスSilverlight「オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません」エラービルドクライアント
つまり、クライアントプロキシクラスを生成するSilverlightクライアントプロジェクトをビルドしようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。
このエラーは、アプリケーションの実行中またはデバッグ中ではなく、ビルド時に発生します。
これは、私のコードファーストクラスで定義されたナビゲーションプロパティ/外部キーがある場合にのみ発生します。
今夜のお手伝いをさせていただきます。
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
}
問題を引き起こしているプロジェクトはどれですか、Silverlightプロジェクトかde EFプロジェクトですか?また、あなたがファイルを紛失していないことを確認することができますか?あなたのWCF RIA ServicesリンクなしでSLを構築しますか? –
@Rikkos SLプロジェクトでした。下の部分解を参照してください。これは、既に試みた他のソリューションと統合されたツールキットでTextTemplateを使用することによる問題の組み合わせでした。 – KitKat