Is it possible to define primary and foreign keys for database Views in Microsoft SQL Server Management Studio? How?
I'm trying to create an ADO.NET Entity Data Model to read from four old, poorly-formed database tables that I cannot modify. I've created views of just the data I need.
The four views should map to a simple three-entity EDMX with one many-to-many relationship.
I get this error when creating my Data Model:
The table/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.
It correctly inferred the primary keys of two views. But failed to do so with the other two.
One of my problem views uses aggregate functions:
SELECT MAX(...) ... GROUP BY ...
The other ought to have a compound primary key of two foreign keys.
You need to define your view so that it:
PRIMARY KEY
columnsJOIN
'sUNION
'sAny row from your view should map to exactly one row from the table.
It cannot be updateable. For a readonly entity, a solution from here:
For the second question:
From documentation:
Actually, you can create a view that uses JOIN's and generate and Entity in your model from it.
You can alter your views by creating a
NOT NULL
index column in your view doing something like this: