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

itnifl
itnifl used Ask the Experts™
on
Is there a way in code first to specify in a many to many relation that minimum one entity must exist?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
AndyAinscowFreelance programmer / Consultant

Commented:
Could you have an inbetween table that had 1:n relations to the other two tables ?
itniflProgrammer

Author

Commented:
Perhaps? If it works?
AndyAinscowFreelance programmer / Consultant

Commented:
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.
Announcing the Winners!

The results are in for the 15th Annual Expert Awards! Congratulations to the winners, and thank you to everyone who participated in the nominations. We are so grateful for the valuable contributions experts make on a daily basis. Click to read more about this year’s recipients!

itniflProgrammer

Author

Commented:
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?
AndyAinscowFreelance programmer / Consultant

Commented:
>>never allow one entity without at least one other entitity

I don't understand what you mean by that
itniflProgrammer

Author

Commented:
This relation:
Many to many but never less than one.
 Person >|--|< Bills
AndyAinscowFreelance programmer / Consultant

Commented:
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.
itniflProgrammer

Author

Commented:
ERHere 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?
Freelance programmer / Consultant
Commented:
>>Can it be enforced?

That I don't know.  I have limited experience with Entity but I have a lot of experience of databases.  With a database I'd always use an intermediate table if I required n:n to make it n:1:n in the relationships.
itniflProgrammer

Author

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

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial