Recently, while developing an application using Entity Framework, I ran into several compilation errors after adding an additional table to my database. Most notably was this error when trying to declare a couple of variables that had once worked before:
Compiler Error Message: CS1061: … does not contain a definition for … and no extension method … accepting a first argument of type … could be found (are you missing a using directive or an assembly reference?)
When searching around in my .edmx file for reasons as to why my relationships were not working, I ran into this message under the mapping details:
“Mappings are not allowed for an association over exposed foreign keys.”
I wanted to note that this message is not relevant to the issue at hand. After I solved the problem, I still received this message.
I quickly realized that the error had to do with the relationships between tables that I had previously established. When I had added the new table, I deleted the diagram from my .edmx file and updated the model from the database like I normally do when adding a new table. However, this time, Entity Framework did not properly regenerate the code associated with my database. Each property was stored as a class member within the entity class as expected, but my relationships were not. This was despite the fact that my .edmx diagram showed the relationships exactly as they should be.
After hours of Googling different phrases and errors, I ran into this ticket
As it turns out, this is a bug with Entity Framework inside of VS2012, and if your Visual Studio is out of date, you are likely to experience it. Because of this bug, if your .edmx file is nested within a project folder, Entity Framework will sometimes fail to generate code properly. Fortunately, the solution is much easier to implement than it is to find. You can do any of the following:
- Update your Visual Studios here
- Right click on the .tt file and select “Run Custom Tool”.
- Drag the .edmx file out of the project folder.