I need to create a composite key for a view in SQL Server 2008 because I cannot import a view into entity framework without a primary key defined and since Views don’t have primary keys I have to create. Right now I am getting this error when I try to import the View into EF.
The table/view ‘FanDB.dbo.Quick_View’ does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it.
I have been able to add the View to EF before but my boss deleted our DB and so I am recreating the DB from scratch. I have just forgotten how I did it:( Thanks for your help, feel free to ask any questions I will be checking back as often as I can and if I figure it out I will post the solution because all the questions on stack overflow either say to edit the XML file(can’t do this because I can’t add it to the .edmx) or add a primary key column which I can’t do because it is a quick view.
You could recreate the view as a table, add a primary key, import it into EF, and then drop table and reinstate the view. This will get your table into EF, but then you have to be careful whenever you update the model again in the future.
Alternatively, you could create a model db, with all the same object names as your actual db, but with views created as tables. At design time, use the model db, and at run time, use the actual db. So long as the view is updateable, the EF runtime won’t care that it’s actually a view, and not a table.
If you are feeling compulsive, and have a lot a tables, it wouldn’t be too hard to auto-magically generate the model db from the actual db.