Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why have a foreign key in a class in Entity Framework?

Say I have 2 classes: Ninja has-many NinjaEquipment. Inside NinjaEquipment, I have: public Ninja Ninja { get; set; }. I've seen some people also include a reference to the foreign key, such as: public int NinjaID { get; set; }. What's the point of doing this? Isn't a simple Ninja reference enough if I want to get to the "parent" of one-to-many relationship?

like image 383
anemaria20 Avatar asked May 26 '16 11:05

anemaria20


Video Answer


1 Answers

What's the point of doing this?

I believe this is a difference between Foreign Key's and Navigation Properties.

Navigation properties provide a way to navigate an association between two entity types. Every object can have a navigation property for every relationship in which it participates. Navigation properties allow you to navigate and manage relationships in both directions, returning either a reference object (if the multiplicity is either one or zero-or-one) or a collection (if the multiplicity is many). You may also choose to have one-way navigation, in which case you define the navigation property on only one of the types that participates in the relationship and not on both.

It is recommended to include properties in the model that map to foreign keys in the database. With foreign key properties included, you can create or change a relationship by modifying the foreign key value on a dependent object. This kind of association is called a foreign key association. Using foreign keys is even more essential when working with N-Tier applications. Note, that when working with 1-to-1 or 1-to-0..1 relationships, there is no separate foreign key column, the primary key property acts as the foreign key and is always included in the model.

When foreign key columns are not included in the model, the association information is managed as an independent object. Relationships are tracked through object references instead of foreign key properties. This type of association is called an independent association. The most common way to modify an independent association is to modify the navigation properties that are generated for each entity that participates in the association.

This information can be found at this source.

like image 178
Grizzly Avatar answered Oct 06 '22 05:10

Grizzly