RIA 서비스를 사용하여 Silverlight에서 엔터티 프레임 워크 5의 코드 우선을 사용하여 새 프로젝트를 설정하고 있습니다. 내가 만난 몇 가지 문제로 인해 테스트 프로젝트를 만들었으며 아래 코드를 게시 할 것입니다.EF5 코드 첫 번째 및 RIA 서비스 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
}
어떤 프로젝트가 문제를 일으키고 있습니까, 실버 라이트 프로젝트 또는 de EF 프로젝트입니까? 또한 파일을 놓치지 않았는지 확인하고 WCF RIA Services 링크없이 SL을 빌드 할 수 있습니까? –
@Rikkos SL 프로젝트 였고 모든 엔티티 양식을 제거하면 정상적으로 빌드되었습니다. 아래 부분 솔루션을 참조하십시오. 이미 시도한 다른 솔루션과 병합 된 툴킷에서 TextTemplate을 사용하는 것이 문제의 조합이었습니다. – KitKat