У меня есть структура Entity Framework, и она отлично работает большую часть времени, в которой я нуждаюсь. У меня есть такая структураEntity Framework - Stop Lazy Загрузка похожих объектов по запросу?
public partial class Topic : Entity
{
public Guid Id { get; set; }
public string Name { get; set; }
public DateTime CreateDate { get; set; }
public virtual Post LastPost { get; set; }
public virtual Category Category { get; set; }
public virtual IList<Post> Posts { get; set; }
public virtual IList<TopicTag> Tags { get; set; }
public virtual MembershipUser User { get; set; }
public virtual IList<TopicNotification> TopicNotifications { get; set; }
public virtual IList<Favourite> Favourites { get; set; }
public virtual Poll Poll { get; set; }
}
Как вы можете видеть, у меня есть ряд связанных объектов, которые являются списками. Они отображаются в стандартном и ленивы загружены, так что я могу назвать Topic.Posts или Topic.TopicNotifications и т.д. ... (Mappings ниже)
HasOptional(t => t.LastPost).WithOptionalDependent().Map(m => m.MapKey("Post_Id"));
HasOptional(t => t.Poll).WithOptionalDependent().Map(m => m.MapKey("Poll_Id"));
HasRequired(t => t.Category).WithMany(t => t.Topics).Map(m => m.MapKey("Category_Id"));
HasRequired(t => t.User).WithMany(t => t.Topics).Map(m => m.MapKey("MembershipUser_Id"));
HasMany(x => x.Posts).WithRequired(x => x.Topic).Map(x => x.MapKey("Topic_Id")).WillCascadeOnDelete();
HasMany(x => x.TopicNotifications).WithRequired(x => x.Topic).Map(x => x.MapKey("Topic_Id")).WillCascadeOnDelete();
HasMany(t => t.Tags)
.WithMany(t => t.Topics)
.Map(m =>
{
m.ToTable("Topic_Tag");
m.MapLeftKey("TopicTag_Id");
m.MapRightKey("Topic_Id");
});
Это все хорошо. Но в некоторых случаях мне нужно вручную заполнять темы. Пост и тема.
Но если я пытаюсь установить Topic.Posts = SomeCollection
он запускает ленивую нагрузку и загружает все посты, а затем позволяет мне установить мою коллекцию так что я получаю два набора SQL выполненного (первый я не хочу)
Есть ли вообще, отключить ленивую загрузку вручную по требованию только тогда, когда я хочу установить коллекцию вручную?
Надежда, что имеет смысл ...:/
Я чувствую проблему XY здесь http://meta.stackexchange.com/a/66378/134199 - Я думаю, что ваша РЕАЛЬНАЯ проблема - это «необходимость вручную заполнять темы. Вероятно, вы пытаетесь сделать что-то, что намного лучше сделано по-другому, поскольку то, что вы делаете, не имеет никакого смысла. Что именно вы пытаетесь сделать ... и почему? –
Я буду второй, что говорит @ErikFunkenbusch. Зачем вам нужно вручную создавать коллекцию «Сообщения» и «Избранное»? –
Если вы ответите на то, что вы пытаетесь сделать, мы, возможно, действительно сможем помочь вам решить вашу реальную проблему .. нет проблемы, которую вы ДУМАЕТЕСЬ, потому что вы ДУМАЕТЕ, что вам нужно сделать что-то конкретное, чтобы решить вашу проблему проблема. –