Я пытался решить эту проблему на прошлой неделе.Я переустанавливал Windows и Visual Studio с нуля и все еще получал ту же проблему.
это мой класс сущности продукта ниже
namespace Example.Entitiy.Concrete
{
public class Product: IEntity
{
//one to many relationship between product and category classes
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CategoryId { get; set; }
public Category CurrentCategory { get; set; }
}
}
это моя сущность категории ниже.
namespace Example.Entitiy.Concrete
{
public class Category : IEntity
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public ICollection<Product> Products { get; set; }
}
}
и вот мой контекстный класс, где я использовал свободный API.
namespace Example.DataAccess.Concrete.EntityFramework.EFBase
{
public class ExampleDataContext: DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
public ExampleDataContext()
{
this.Configuration.LazyLoadingEnabled = false;
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleDataContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Product>().HasRequired<Category>(p => p.CurrentCategory).WithMany(c => c.Products).HasForeignKey<int>(p => p.CategoryId);
}
}
}
Мне пришлось отключить lazyloading, потому что, если я включаю его, то программа выдает ошибку при перечислении свойства навигации, которое я не перечислю в моем Datagridview.
И когда я запускаю приложение, это то, что я получаю ниже.что бы я ни делал, я мог бы сделать так, чтобы не отображать свойство навигации в datagridview.
это снимок экрана
Если вы хотите увидеть весь мойКоды программ, вот они на Github