Reload an entity and all Navigation Property Association- DbSet Entity Framework

前端 未结 4 840
广开言路
广开言路 2020-12-14 00:26

I have a problem with entity association refresh. When I get an entity with like this:

MyContext context = new MyContext();

Person myPerson = context.Person         


        
4条回答
  •  既然无缘
    2020-12-14 01:23

    If you don't use lazy loading, you have the load the new Address explicitly (as you had to load it explicitly (with Include, for example), when you loaded the Person initially):

    context.Entry(myPerson).Reload();
    // If the person refers to another Address in the DB
    // myPerson.Address will be null now
    
    if (myPerson.Address == null)
        context.Entry(myPerson).Reference(p => p.Address).Load();
        // myPerson.Address will be populated with the new Address now
    

    If you use lazy loading, you don't need the second code block. Nonetheless, you get a new query to the database as soon as you access properties of the new myPerson.Address (like you have a new query in the second code block above) because the first line will mark the navigation property as not loaded if the person refers to a new address in the DB.

    This behaviour doesn't depend on whether you have exposed the foreign key in the model class or not.

    There doesn't seem to be a way to call some single magic Reload method which would reload and update the whole object graph in one call (similar like there is no single Include to eager load a complete object graph).

提交回复
热议问题