J'ai un livre d'objets parent, et une propriété de cet objet est éditeur. Chaque fois que je publie un livre, il ajoute un nouvel éditeur, même si l'éditeur existe déjà. Quelqu'un peut-il me dire comment ajouter le livre et au lieu d'ajouter de nouveau l'éditeur, il suffit de faire référence à un livre existant? Le code que j'utilise est ci-dessous ... Merci d'avance!1 à 1 Relations d'objet dans le code EF4 d'abord
public class Book
{
public int BookID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime CreateDate { get; set; }
public virtual Publisher Publisher { get; set; }
}
public class Publisher
{
public int PublisherID { get; set; }
public string Address { get; set; }
}
public class SqlCEDataStore : DbContext
{
public DbSet<Book> Books { get; set; }
public DbSet<Publishers> Publishers { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.IncludeMetadataInDatabase = false;
}
}
public class TimeSinkRepository : IRepository<Book>
{
private static SqlCEDataStore context = new SqlCEDataStore();
public int Add(Book entity)
{
context.Books.Add(entity);
return context.SaveChanges();
}
}
var book = new Book()
{
Title = "New Title",
Description = "New Description",
CreateDate = DateTime.Now,
Publisher = new Publisher() { PublisherID = 1 }
};
var repository = new BookRepository();
var result = repository.Add(book);
J'ai essayé ceci, mais j'ai obtenu l'erreur suivante: "Le ObjectStateManager ne contient pas un ObjectStateEntry avec une référence à un objet de type" Blah.Publisher "." Des idées? –