none
[ADO.NET; EF] FactoryMethod benötigt id-Wert RRS feed

  • Frage

  • Hallo.
    D. Parys (Microsoft Evangelist) hat in einem Webcast über das EF gesprochen.
    Dort nutzt er die FactoryMethod die beim Anlegen einer EDMX aus der Datenbanktabelle erzeugt wird.

    Er sagte, dass nur Pflichtfelder zum übergeben angezeigt werden.

    Doch warum wird bei mir jeder Wert angezeigt, unteranderem auch "id" und "timestamp"?

    Beispiel (Designer):

    public partial class HitCounter : global::System.Data.Objects.DataClasses.EntityObject
        {  [global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")]
            public static HitCounter CreateHitCounter(int id, string ip, byte[] timestamp)
            {
                HitCounter hitCounter = new HitCounter();
                hitCounter.id = id;
                hitCounter.ip = ip;
                hitCounter.timestamp = timestamp;
                return hitCounter;
            }

    "id" sowie "timestamp" werden automatisch generiert. Warum also Pflichtfelder?

    Danke

    Mittwoch, 9. Mai 2012 18:41

Alle Antworten

  • Microsoft bietet dazu nur (von mir gefundenen) folgende Stellungnahme an:

    // Create a new SalesOrderDetail object.
            // You can use the static CreateObjectName method (the Entity Framework
            // adds this method to the generated entity types) instead of the new operator:
            // SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
            //                                         Guid.NewGuid(), DateTime.Today));

    Doch hilft das nicht viel weiter :/

    Mittwoch, 9. Mai 2012 19:33
  • Wenn man die Übergabewerte im Designer manuell löscht,
    funktioniert die Eintragung.

    Leider finde ich es sehr schade, dies noch manuell machen zu müssen.

    Für eine bessere Lösung bin ich gerne bereit.

    public static HitCounter CreateHitCounter(/*int id,*/ string ip/*, byte[] timestamp*/)
            {
                HitCounter hitCounter = new HitCounter();
                //hitCounter.id = id;
                hitCounter.ip = ip;
                //hitCounter.timestamp = timestamp;
                return hitCounter;
            }

    Mittwoch, 9. Mai 2012 20:30