How are the compressed models stored in the EF 4.3

2019-02-14 03:29发布

问题:

I'm working with Code First Migrations (Entity Framework 4.3) and I'd like to get a compressed binary version of the current model, so that I can manually compare it to the latest model stored in the __MigrationHistory table (or to one I have stored in a text file).

There is the EdmMetadata.TryGetModelHash() method, but that's marked as deprecated and I want to avoid it if possible (for future-proofing reasons).

How would I do this under EF 4.3?

Edit: From a bit more investigation and the info in Pawel's answer I've figured out that this field no longer stores a hash but a compressed binary representation of the model. It's this I'm trying to create.

回答1:

__MigrationHistory table no longer contains a hash of the model. Instead it now contains the model in the compressed form. Also, verifying whether the model changed or not no longer relies on just comparing the hash since Migrations need to "know" what changed and how it did change.

EdmMetadata was a table that was being used before Migrations were integrated to Entity Framowork in 4.3/5.0 and won't be created in databases created by EF 4.3+. You can find some additional details here as well: http://blog.oneunicorn.com/2012/01/13/ef-4-3-beta-1-what-happened-to-that-edmmetadata-table/