---
title: "Spara many-to-many relation med nhibernate"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/182368-spara-many-to-many-relation-med-nhibernate"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2010-02-08T10:50:28.000Z"
updated: "2010-02-10T20:10:35.000Z"
replies: 5
views: 1215
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/182368-spara-many-to-many-relation-med-nhibernate"
---

# Spara many-to-many relation med nhibernate

## #1 — doggelito, 2010-02-08T10:50Z

Har en many-to-many relation där tre tabeller ingår (vad skulle det annars vara! ;) ), en på varje sida och en relationstabell i mitten.

Jag undrar nu: 
På vilka sätt kan jag spara min relation mot databasen?
Ett sätt är ju så här:

```
MyServiceLayer service = new MyServiceLayer();
MyClass1.MyClasses2.Add(new MyClass2());
service.Save(MyClass1);
```

Där MyClasses2 är ex. en IList\<MyClass2\>.

Men finns det nått annat sätt än att köra en addmetod?
Jag tänker mig en metod, typ:

```
MyServiceLayer service = new MyServiceLayer();
service.AddRelation(1, 23);
```

```
public class MyServiceLayer
{
     public void AddRelation(int class1ID, int class2ID)
     {
          ???
     }
}
```

Skulle det gå att göra något liknande? Är det vettigt ens?
Men relationen i sig är ju inte mappad i egen klass så jag kommer inte på hur jag då skulle kunna spara den utan att använda Add på IList:en!?  :q

Varför jag frågar från början är för att det känns helt onödigt att behöva köra en *Save* på *MyClass1* bara för att lägga till en relation!

Permalänk: https://www.webforum.nu/p/182368

## #2 — Nickemannen, 2010-02-10T12:01Z

Many-To-Many är något man inte rekommenderar och går i många fall att lösa på ett annat smartare sätt med en entity som är själva länkningen.

Jag tror att båda dina exempel skall fungera du behöver sätta i mappningen i fall ett att den skall sköta själva nersparningen.

Permalänk: https://www.webforum.nu/p/2225519

## #3 — doggelito, 2010-02-10T12:34Z

Varför rekommenderar man inte many-to-many?
Ser man till databasen så är ju det en väldigt vanlig relation.

Men ser man till databasen med sina tre tabeller så kan det ju verka logiskt att ha även tre domänklasser men är det verkligen vettigt? Mellantabellen gör ju inget mer än att länka ihop två andra objekt.
Och gör man så så får man en skum relation kodmässigt, det skulle då se ut:

```
MyClass1.IList<MyRelationClass>().IList<MyClass2>()
```

Nää, det kan inte vara så du menar, eller?
Klass 1 måste ju ha endast en samling med Klass2:or

Permalänk: https://www.webforum.nu/p/2225522

## #4 — doggelito, 2010-02-10T20:04Z

Hittade en liknande fråga här:
<http://stackoverflow.com/questions/1695063/what-is-the-correct-way-to-define-many-to-many-relationships-in-nhibernate-to-all/>
Intressant tråd, kan dock inte utläsa och förstå deras slutsats (om de kom fram till någon)!?

Permalänk: https://www.webforum.nu/p/2225539

## #5 — Nickemannen, 2010-02-10T20:08Z

<http://docs.jboss.org/hibernate/core/3.3/reference/en/html/collections.html#collections-ofvalues>

<https://www.hibernate.org/hib_docs/nhibernate/html/best-practices.html>

> Don't use exotic association mappings.
>
> Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the "link table". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really neccessary.

Permalänk: https://www.webforum.nu/p/2225540

## #6 — Nickemannen, 2010-02-10T20:10Z

> **[doggelito skrev:](https://www.webforum.nu/p/1497433)**
>
> Hittade en liknande fråga här:
> <http://stackoverflow.com/questions/1695063/what-is-the-correct-way-to-define-many-to-many-relationships-in-nhibernate-to-all/>
> Intressant tråd, kan dock inte utläsa och förstå deras slutsats (om de kom fram till någon)!?

Där låter dom en av klasserna sköta nersparningen för du kan inte låta både Category och Item i det där fallet spara ner relationen då det skulle bli en cirkelsituation, Category försöker spara item som försöker spara Category :).

Permalänk: https://www.webforum.nu/p/2225542

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/182368-spara-many-to-many-relation-med-nhibernate
