I have a class with a relationship to another table.
public class MyClass
{
[Key]
public Guid Id {get; set; }
public virtual OtherClass OtherClass { get; set; }
}
I hook this up to a controller and create views for CRUD – all works fine.
In the DB a OtherClass_OtherClassId column is created, but this is not in the model.
How can I put a reference in this Id column during the controller’s Create method?
How can I force this relationship to be [Required] without having to create a brand new OtherClass each time?
Annotated class with some description:
So which is better? Independent associations or declaring the foriegn key?
Independent associations match object programming closer. With OOP, one object doesn’t really care much about the Id of a member. ORM’s try to cover these relationships up, with varying degrees of success.
Declaring the foreign key puts database concerns into your model, but there are scenarios where this makes dealing with EF much easier.
Example – when updating an object with a required independent association, EF will want to have the entire object graph in place.
If all you want to do is update the name, you’ll either have to pull OtherClass from the database as well since it’s required for entity validation or attach a stubbed entity (assuming you know the id). If you explicitly declare foreign key, then you won’t run into this scenario.
Now with foreign keys, you run into a different issue:
In summary –
Independent associations
Foreign Keys