/ / Entity Framework a pridanie referencie / položky do vyhľadávacieho stola - c #, entity-framework, entity-framework-4, vyhľadávanie

Entity Framework a pridanie referencie / položky do vyhľadávacieho stola - c #, entity-framework, entity-framework-4, vyhľadávanie

Mám projekt, kde používam vyhľadávací stôl na spojenie dvoch tabuliek dohromady:

Day         WeatherLookUp       Weather
---         -------------       -------
ID (PK) --> DayID            |- ID (PK)
WeatherID    <---|  Description

To umožňuje určiť viaceré poveternostné podmienky na jeden deň.

Z toho môžem čítať bez problémov, ale s mojimiproblém je, keď prídem na vloženie prepojenia medzi tabuľkou Deň a Počasie. Vytvoril som dva stĺpce tabuľky WeatherLookup ako zložený primárny kľúč tabuľky a ako výsledok EF mi neumožňuje urobiť priamu vloženie do tabuľky WeatherLookup.

Myslel som, že som potreboval pridať záznam o počasí takhle:

myDay.Weather.Add(new Weather { ID = 2 } );

... ale EF si myslí, že sa snažím pridať nový typ počasia.

Som si istý, že mi chýba niečo jasné, ale nemôžem vyriešiť, čo musím použiť Attach() nejakým spôsobom?

odpovede:

4 pre odpoveď č. 1

Musíte pripojiť Weather subjektu do kontextu, aby EF povedal, že už existuje v databáze a nie je potrebné ho vložiť:

var weather = new Weather { ID = 2 };
context.Weather.Attach(weather);
myDay.Weather.Add(weather);

Prípadne môžete načítať entitu z databázy (ktorá sa implicitne pripojí k kontextu):

var weather = context.Weather.Find(2);
myDay.Weather.Add(weather);

0 pre odpoveď č. 2

Počas WeatherLookUp musíte "Weather" pomôcť nielen pomocou ID.

niečo také:

Weather weather = new Weather();
weather.Description = "hi";


WeatherLookUp lookup = new WeatherLookUp ();
lookup.Weather = weather;

myDay.Weather.add(Weather);
myDay.WeatherLookUp.add(lookup);
myDay.SaveChanges();