Tôi đang làm việc để thiết lập một dự án mới bằng cách sử dụng Mã đầu tiên cho khung thực thể 5 trong silverlight sử dụng dịch vụ RIA. Tôi đã tạo một dự án thử nghiệm do một số vấn đề tôi đã gặp phải và sẽ đăng mã bên dưới.Mã EF5 Dịch vụ đầu tiên và RIA Silverlight "Tham chiếu đối tượng không được đặt thành một thể hiện của đối tượng" lỗi xây dựng máy khách
Cụ thể, tôi nhận được một 'đối tượng tham chiếu không được đặt để một thể hiện của một đối tượng' lỗi bất cứ lúc nào tôi cố gắng để xây dựng dự án khách hàng Silverlight mà nên tạo ra các lớp proxy client.
Chỉ cần được rõ ràng, lỗi này không phải là trong khi chạy hoặc gỡ lỗi các ứng dụng, nhưng khi xây dựng nó.
Chúng tôi đã tách rằng điều này chỉ xảy ra nếu tôi có bất kỳ thuộc tính chuyển hướng/Keys nước ngoài được xác định trên lớp Mã đầu tiên của tôi.
Bất kỳ sự giúp đỡ tối nay sẽ được đánh giá rất nhiều.
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
}
dự án gì đang gây ra những rắc rối, các dự án Silverlight hoặc dự án EF de? Bạn cũng có thể xác minh rằng bạn không thiếu bất kỳ tệp nào và SL build không có liên kết WCF RIA Services của bạn –
@Rikkos Đó là Dự án SL và nó được xây dựng tốt nếu tôi xóa tất cả các mối quan hệ tạo thành thực thể của tôi. Xem giải pháp từng phần bên dưới. Đó là một sự kết hợp của các vấn đề từ việc sử dụng TextTemplate trong bộ công cụ hợp nhất với các giải pháp khác mà tôi đã thử. – KitKat