kostenloser Webspace werbefrei: lima-city


[C#] Entity Framework Fehler bei 'SaveChanges()'

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    spuglisi

    Kostenloser Webspace von spuglisi

    spuglisi hat kostenlosen Webspace.

    Hallo!

    Bei dem Versuch ein Objekt mit der Beziehung n : 1 in die Datenbank zu speichern, bekomme ich immer wieder diese Fehlermeldung:

    EntitySet 'OrderItems' kann nicht aktualisiert werden, denn es hat eine DefiningQuery, 
    und im <ModificationFunctionMapping>-Element ist kein <InsertFunction>-Element zur Unterstützung 
    des aktuellen Vorgangs vorhanden.




    Leider verstehe ich überhaupt nicht, was damit gemeint ist.

    So gehe ich vor:


    /* Codeausschnitt */
    
    Order order = new Order
    {
     Id = Guid.NewGuid()
    };
    
    // Objekt wird registriert
    App.entities.Orders.AddObject( order );
    
    /* 
    * OrderItem (n :1 Beziehung, also eine Order hat 
    * mehrere OrderItems (soll das Produkt darstellen)) wird gebildet:
    */
    OrderItem item = new OrderItem
    {
     AllPrice = article.Price,
     SinglePrice = article.Price,
     CategoryName = article.Category.ToString(),
     Name = article.Name,
     Order = order,
     ItemCount = 1,
     OrderId = order.Id
    };
    
    // Order-Time wird festgelegt
    order.Date = DateTime.Now;
    
    // Jetzt wird das orderItem registriert
    App.entities.AddToOrderItems( item );
    
    // nun wird aktualisiert
    App.entities.SaveChanges();      // --> Hier wird die Ausnahme ausgelöst.


    Greetings,
    spuglisi

    Beitrag zuletzt geändert: 13.3.2011 13:26:05 von spuglisi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo spuglisi,

    soweit ich herausfinden konnte, kann die Ursache dafür das Fehlen von Primärschlüssseln in den Tabellen sein (kurz Zusammengefasst).
    D.h. Du kannst entweder jedem OderItem eine eindeutige Id verpassen die dann ein Primärschlüssel ist oder Du machst aus OrderItem.Name und OrderItem.OrderId einen mehrspaltigen Primärschlüssel.
    Im übrigen sollte (zumindest bei relationalen Datenbanken) jede Tabelle über einen Primärschlüssel verfügen.

    Hier der gefundene Artikel: http://www.west-wind.com/weblog/posts/137000.aspx

  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!