Avatar
Majkel
Člen
Avatar
Majkel:

Ahoj, v EF Code First mám vazbu 1:N mezi User a UserDevice, kdy jeden User může mít N UserDevice.

public class User
    {
        [Key]
        public int Usr_Id { get; set; }
        [Required]
        [MaxLength(35)]
        public string Name { get; set; }
        [Required]
        [MaxLength(35)]
        public string Surname { get; set; }
        [Required]
        [MaxLength(35)]
        public string Location { get; set; }

        //NAVIGATION
        public User()
        {
            UserDevices = new List<UserDevice>();
        }

        public virtual ICollection<UserDevice> UserDevices { get; set; }

    }

public class UserDevice
    {
        [Key]
        public int UsrDev_Id { get; set; }
        [Required]
        [MaxLength(50)]
        public string PurposeOfUse { get; set; }

        // NAVIGATION
        //User can have many UserDevice
        public int Usr_Id { get; set; }
        public virtual User User { get; set; }
    }

A ještě konfigurace ve FluentAPI

modelBuilder.Entity<UserDevice>()
               .HasRequired<User>(r => r.User)
               .WithMany(m => m.UserDevices);

Můj problém je, že když zapíšu

var select = from s in db.Users
                         select s;

tak se mi naloaduje nejen seznam User, ale i seznam UserDevice ke každému z nich. Jakým způsobem můžu udělat select, abych získal pouze seznam User bez UserDevice.

 
Odpovědět 11. srpna 20:54
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

Ne, to se ti nenaloaduje.. jen tam mas by default zapnuty lazy loading aa mas tam virtual kolekci, takzev okamziku, kdy se na to snazsi pristoupit (treba jen v debugu ukazes mysi) tak se ti ty devicy naloadi ;-) jestli to chces vypnout, tak dej pryc to virtual, nebo vypni kompletne lazy loading,, nebo udelej select new.. (projekci), ale ne select s --> jinak se stale jedna o dynamic proxy s lazy loadingem.

Editováno 13. srpna 0:23
 
Nahoru Odpovědět 13. srpna 0:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.