Link to home
Start Free TrialLog in
Avatar of itnifl
itniflFlag for Norway

asked on

Entity Framework Code first - Specify minimum one cardinality in a many to many relation

Is there a way in code first to specify in a many to many relation that minimum one entity must exist?
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

Could you have an inbetween table that had 1:n relations to the other two tables ?
Avatar of itnifl

ASKER

Perhaps? If it works?
In database design that is a typical method for n:n relations.

A possible (not so good) example.  You have multiple invoices and multiple quotes in two tables.  A third table would be customers - one customer can have many invoices and that same one customer can have many quotes.
Avatar of itnifl

ASKER

Sure, but in my case I need to restrict the Many to Many relation via Entity Framework to never allow one entity without at least one other entitity, a cardinality of minimum 1. And my question is, how can I practically in example do that?
>>never allow one entity without at least one other entitity

I don't understand what you mean by that
Avatar of itnifl

ASKER

This relation:
Many to many but never less than one.
 Person >|--|< Bills
Still don't understand what you mean with never less than one.

With a 1:n relation you need a record in the master table before you can add records to the child table.
Avatar of itnifl

ASKER

User generated imageHere you see a Certificate and System.
A System can have zero or many certificates.
A Certificate can  have one or many Systems, but never zero.

1:n is a one to many relationship. With an intermediate table as you say, you can have 1:n relationships to two other tables, creating a many to many relation between those tables through the intermediate table. But is the cardinality enforced?

Actually, in Entity Framework something like that is automatically generated when I use http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

But I can via C# in entity framework still have zero entities in lets say:
public virtual ICollection<Student> Students { get; set; }

Open in new window

, but I must enforce that zero entities is never allowed. So I want a Student to have minimum one course, and never allow the student to have zero Courses.

So what I want is Max Cardinality via Entity Framework. http://stackoverflow.com/questions/5104349/what-is-the-difference-between-max-cardinality-and-min-cardinality

Can it be enforced?
ASKER CERTIFIED SOLUTION
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of itnifl

ASKER

OK, thank you. Believing that there is no way to do it in Entity Framework, because there is no source on it anywhere.