2016-12-22 3 views
-3

Hier habe ich zwei Tabellen der gemeinsamen Code in abstrakten Klasse Aufbohren Code geschrieben ist.Add (ImageWithallCtrls.Access1) 'hat einige ungültige Argumente

Das ist meine zwei Tabellenspalten

public class General 
    { 
     public int Id { get; set; } 
     public string F_Name { get; set; } 
     public string L_Name { get; set; } 
     public string Middle_Name { get; set; } 
     public string Gender { get; set; } 
     public string PersonName { get; set; } 
    } 

Hier i' m Trennung commom Code

public abstract class Common 
     { 
      public string F_Name { get; set; } 
      public string L_Name { get; set; } 
     } 

das ist mein Access1 Tabellencode

public class Acc1:Common 
    { 
     public string Middle_Name { get; set; } 
     public string Gender { get; set; } 
    } 

das ist mein Access2 Tabellencode

public class Acc2:Common 
    { 
     public string PersonName { get; set; } 

    } 

Home.cs

Hier kopiere ich sowohl die Tabellen Spalten im Allgemeinen und wenn ich versuche zu retten Tisch im d.Access1.Add (ee) hier bin ich Fehler immer

public ActionResult AbsAssClass(General ss) 
     { 
      Acc1 ee = new Acc1 
      { 
        };   
      db.Access1.Add(ee); 

       return View(); 

     } 
+7

Und was ist der Fehler? – David

+1

Bitte geben Sie weitere Informationen an, damit die Leute Ihre Frage beantworten können. Auf welchen Fehler beziehen Sie sich? – Mike

+0

@DavidFunny: Pro Tipp: Wenn Sie den Fehler beheben möchten, hören Sie auf, die Fehlermeldung zu ignorieren. Was ist die * tatsächliche genaue Fehlermeldung *? Wenn es sich um einen Typunterschied handelt (was so klingt), welche Typen werden hier verwendet? Was erwartet '.Add()'? – David

Antwort

1

'System.Data.Entity.DbSet.Add (Ima geWithallCtrls.Acces s1)' hat einigen ungültigen ar gumente

In dieser Codezeile:

db.Access1.Add(ee); 

Die .Add() Methode eine Art Access1 genannt erwartet. Aber Sie liefert es einen Typ namens Acc1:

Acc1 ee = new Acc1(); 

Acc1 und Access1 sind zwei verschiedene Dinge.

Sie können (oder können nicht, wir wissen es nicht) Eigenschaften mit den gleichen Namen und Typen teilen. Sie können in vielerlei Hinsicht sehr ähnlich sein. Aber sie sind nicht der gleiche Typ. C# ist eine statisch typisierte Sprache, daher zählt "ähnlich" nicht.

Stellen Sie die Methode mit einem Objekt vom Typ ImageWithallCtrls.Access1 zum Speichern in der Datenbank bereit.

Hinweis: Es ist möglich, dass Ihre gesamte Datenebene nicht das ist, was Sie benötigen, oder dass Ihre Projektarchitektur auf grundlegendere Weise unterbrochen ist. Das können wir nicht wissen, das ist weit außerhalb des Rahmens dieser Frage. In Bezug auf die Frage, warum Sie kein Acc1 Objekt in Ihrem Access1 Tisch speichern können, ist es einfach, weil es zwei verschiedene Dinge sind.

+0

aber wie kann ich die Daten in der Tabelle access1 speichern, wenn du bereit bist, werde ich giive my teamviewr id –

+1

@DavidFunny: Sie speichern die Daten, indem Sie eine Instanz von 'Access1' erstellen, sie mit Daten füllen, sie dem DB-Kontext hinzufügen und die Änderungen im DB-Kontext speichern. Es gibt viele Entity Framework-Tutorials, die Ihnen dabei helfen können. – David

Verwandte Themen