Entity Framework - refresh objects from database

前端 未结 3 855
北荒
北荒 2021-02-14 09:53

I\'m having trouble with refreshing objects in my database. I have an two PC\'s and two applications.

On the first PC, there\'s an application which communicates with my

相关标签:
3条回答
  • 2021-02-14 10:29

    Another possibility is to use MergeOption to decide how you want to manage the objects in the context. For example MergeOption.OverwriteChanges will overwrite the object context with values from the data source.

    For more info see http://msdn.microsoft.com/en-us/library/system.data.objects.mergeoption.aspx

    0 讨论(0)
  • 2021-02-14 10:43

    As of EF 4.1 you can use AsNoTracking() method on your entities.

    return myEntities.Measurements.AsNoTracking();
    

    Note that AsNoTracking() will not add the entities to your context for tracking, but merely return them fresh from your data store.

    For more info see http://blogs.msdn.com/b/adonet/archive/2011/02/05/using-dbcontext-in-ef-feature-ctp5-part-11-load-and-asnotracking.aspx

    0 讨论(0)
  • 2021-02-14 10:49

    This should work:

    public static Entities myEntities = new Entities();
    
    public static Measurement GetLastMeasurement(int conditionId)
    {
        myEntities.Refresh(RefreshMode.StoreWins, myEntities.Measurements);
        var allMeasurements = myEntities.Measurements.ToList();//retrieves all measurements from database
    
        return (from measurement in allMeasurements
                where measurement.ConditionId == conditionId
                select measurement).OrderByDescending(cd => cd.Timestamp).First();
    }
    

    What sense makes caching when you refresh store every time you want to use it? You could chage it to:

    public Measurement GetLastMeasurement(int conditionId)
    {
        var entities = new Entities();
        return (from measurement in entities.Measurements
                where measurement.ConditionId == conditionId
                select measurement).OrderByDescending(cd => cd.Timestamp).First();
    }
    

    It also look up in database with every call, but makes much less operations.

    0 讨论(0)
提交回复
热议问题