Код первый, чтобы многие отношения - PullRequest
0 голосов
/ 03 апреля 2012

Я определил отношение один ко многим, как это

    public class ClassA
    {
        [Key, ForeignKey("ClassB"), Column(Order = 0)]
        public int ClassB_ID { get; set; }
         [Key, Column(Order=1)]
        public string  name { get; set; }
        public bool IsApproved { get; set; }
        public virtual ClassB ClassB { get; set; }
     }
    public class ClassB
    {
     [Key]
     public int ID{get;set;}
     public string Name{get;set;}
     public virtual ICollection<ClassA> classAs{get;set;}
    }

Работает нормально, пока я не свяжу classA с Listview с помощью Bind (ClassB.Name)

Я получаю экземпляр ObjectContext былутилизируется и больше не может использоваться для операций, требующих подключения.

1 Ответ

1 голос
/ 03 апреля 2012

Это может быть из-за использования Ленивая загрузка . Что приводит к дополнительному обращению к базе данных при попытке доступа с помощью свойства навигации (ClassA), но ваш контекст уже удален.

Ленивая загрузка : Когда объект читается впервые, связанные данные не извлекаться. Тем не менее, при первой попытке доступа к навигации свойство, данные, необходимые для этого свойства навигации автоматически восстанавливается. Это приводит к нескольким запросам, отправленным на базы данных.

Вероятно, вы могли бы решить эту проблему с помощью Стремительная загрузка Include() или Явная загрузка .

var values = context.ClassB.Include("ClassA").ToList()

http://www.asp.net/web-forms/tutorials/continuing-with-ef/maximizing-performance-with-the-entity-framework-in-an-asp-net-web-application

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...