Gå til innhold

Anbefalte innlegg

Hei!

 

Har nå vært igjennom det av filer og definisjoner jeg kunne finne ang. temaet, og kan enda ikke forstå hva som er galt. Håper noen her kan forklare hva feilen er.

 

Jeg skal lage en helt enkel insert i vha. Linq to Entities. Koden ser da sånn ut:

 

Queue newQueueElement = new Queue()
       {
// Alle disse er selvfølgelig ints.
// Queue tabellen inneholder kun disse 4 feltene, og alle
// er datatype int.
           CitiesID = iSelectedCity,
           Location = iSelectedLoc,
           Ticks = 5,
           Building = iBuildingID
       };

       db.Queue.AddObject(newQueueElement);
       db.SaveChanges();

 

Dette gir error på linjen "db.Queue.AddObject(newQueueElement);":

 

Error	5	The best overloaded method match for 'System.Data.Objects.ObjectSet<Database1Model.Queue>.AddObject(Database1Model.Queue)' has some invalid arguments

 

AddObject ser bare slik ut:

public void AddObject(TEntity entity);

 

Her er koden fra Database1Model dersom det skulle ha noe med saken å gjøre. Har sett på den, men kan ikke se noe som skulle tilsi at jeg skulle få feil.

 

 

 

[EdmEntityTypeAttribute(NamespaceName="Database1Model", Name="Queue")]
   [serializable()]
   [DataContractAttribute(IsReference=true)]
   public partial class Queue : EntityObject
   {
       #region Factory Method

       /// <summary>
       /// Create a new Queue object.
       /// </summary>
       /// <param name="citiesID">Initial value of the CitiesID property.</param>
       /// <param name="location">Initial value of the Location property.</param>
       /// <param name="ticks">Initial value of the Ticks property.</param>
       /// <param name="building">Initial value of the Building property.</param>
       public static Queue CreateQueue(global::System.Int32 citiesID, global::System.Int32 location, global::System.Int32 ticks, global::System.Int32 building)
       {
           Queue queue = new Queue();
           queue.CitiesID = citiesID;
           queue.Location = location;
           queue.Ticks = ticks;
           queue.Building = building;
           return queue;
       }

       #endregion
       #region Primitive Properties

       /// <summary>
       /// No Metadata Documentation available.
       /// </summary>
       [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
       [DataMemberAttribute()]
       public global::System.Int32 CitiesID
       {
           get
           {
               return _CitiesID;
           }
           set
           {
               if (_CitiesID != value)
               {
                   OnCitiesIDChanging(value);
                   ReportPropertyChanging("CitiesID");
                   _CitiesID = StructuralObject.SetValidValue(value);
                   ReportPropertyChanged("CitiesID");
                   OnCitiesIDChanged();
               }
           }
       }
       private global::System.Int32 _CitiesID;
       partial void OnCitiesIDChanging(global::System.Int32 value);
       partial void OnCitiesIDChanged();

       /// <summary>
       /// No Metadata Documentation available.
       /// </summary>
       [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
       [DataMemberAttribute()]
       public global::System.Int32 Location
       {
           get
           {
               return _Location;
           }
           set
           {
               OnLocationChanging(value);
               ReportPropertyChanging("Location");
               _Location = StructuralObject.SetValidValue(value);
               ReportPropertyChanged("Location");
               OnLocationChanged();
           }
       }
       private global::System.Int32 _Location;
       partial void OnLocationChanging(global::System.Int32 value);
       partial void OnLocationChanged();

       /// <summary>
       /// No Metadata Documentation available.
       /// </summary>
       [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
       [DataMemberAttribute()]
       public global::System.Int32 Ticks
       {
           get
           {
               return _Ticks;
           }
           set
           {
               OnTicksChanging(value);
               ReportPropertyChanging("Ticks");
               _Ticks = StructuralObject.SetValidValue(value);
               ReportPropertyChanged("Ticks");
               OnTicksChanged();
           }
       }
       private global::System.Int32 _Ticks;
       partial void OnTicksChanging(global::System.Int32 value);
       partial void OnTicksChanged();

       /// <summary>
       /// No Metadata Documentation available.
       /// </summary>
       [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
       [DataMemberAttribute()]
       public global::System.Int32 Building
       {
           get
           {
               return _Building;
           }
           set
           {
               OnBuildingChanging(value);
               ReportPropertyChanging("Building");
               _Building = StructuralObject.SetValidValue(value);
               ReportPropertyChanged("Building");
               OnBuildingChanged();
           }
       }
       private global::System.Int32 _Building;
       partial void OnBuildingChanging(global::System.Int32 value);
       partial void OnBuildingChanged();

       #endregion

 

 

 

 

 

Eller en lengre bit, som også finnes i samme filen, som sier meg lite. Men dersom det har noe med problemet å gjøre, så er den også inkludert:

 

public partial class Queue : INotifyPropertyChanging, INotifyPropertyChanged
{

private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

private int _CitiesID;

private int _Location;

private int _Ticks;

private int _Building;

   #region Extensibility Method Definitions
   partial void OnLoaded();
   partial void OnValidate(System.Data.Linq.ChangeAction action);
   partial void OnCreated();
   partial void OnCitiesIDChanging(int value);
   partial void OnCitiesIDChanged();
   partial void OnLocationChanging(int value);
   partial void OnLocationChanged();
   partial void OnTicksChanging(int value);
   partial void OnTicksChanged();
   partial void OnBuildingChanging(int value);
   partial void OnBuildingChanged();
   #endregion

public Queue()
{
	OnCreated();
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CitiesID", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int CitiesID
{
	get
	{
		return this._CitiesID;
	}
	set
	{
		if ((this._CitiesID != value))
		{
			this.OnCitiesIDChanging(value);
			this.SendPropertyChanging();
			this._CitiesID = value;
			this.SendPropertyChanged("CitiesID");
			this.OnCitiesIDChanged();
		}
	}
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Location", DbType="Int NOT NULL")]
public int Location
{
	get
	{
		return this._Location;
	}
	set
	{
		if ((this._Location != value))
		{
			this.OnLocationChanging(value);
			this.SendPropertyChanging();
			this._Location = value;
			this.SendPropertyChanged("Location");
			this.OnLocationChanged();
		}
	}
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Ticks", DbType="Int NOT NULL")]
public int Ticks
{
	get
	{
		return this._Ticks;
	}
	set
	{
		if ((this._Ticks != value))
		{
			this.OnTicksChanging(value);
			this.SendPropertyChanging();
			this._Ticks = value;
			this.SendPropertyChanged("Ticks");
			this.OnTicksChanged();
		}
	}
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Building", DbType="Int NOT NULL")]
public int Building
{
	get
	{
		return this._Building;
	}
	set
	{
		if ((this._Building != value))
		{
			this.OnBuildingChanging(value);
			this.SendPropertyChanging();
			this._Building = value;
			this.SendPropertyChanged("Building");
			this.OnBuildingChanged();
		}
	}

 

Endret av Cemi
Lenke til kommentar
Videoannonse
Annonse

Dette gir error på linjen "db.Queue.AddObject(newQueueElement);":

 

Error	5	The best overloaded method match for 'System.Data.Objects.ObjectSet<Database1Model.Queue>.AddObject(Database1Model.Queue)' has some invalid arguments

Det denne feilmeldingen i all enkelhet sier er at du forsøker å legge til et element i en gruppe som skal være Database1Model.Queue, men som ikke er det. Med andre ord så må du sjekke objektet du forsøker å legge til.

Lenke til kommentar

Det er slik jeg og har forstått det, men jeg er sikker på at det er korrekt.

 

Jeg klarer derimot ikke se noe feil der hvor jeg oppretter objektet. Har sjekket det mot flere eksempler på nettet og i bøker jeg har, men kan ikke finne noe. Så håpte noen kanskje kunne se feilen, men har jo ingen forhåpninger da det virker som noe jeg må ha skrevet feil en eller annen plass.

 

Synes bare det er litt merkelig da det meste er auto-generert kode fra Visual Studio. :dontgetit:

 

Takk for svar uansett :)

Lenke til kommentar

AddObject er funksjonen som legger til entitetsobjektet, og SaveChanges er funksjonen som lagrer det til databasen.

 

Jeg fant derimot ut hva som var problemet :)

 

En av de andre på gruppen hadde opprettet en Sql modell i tillegg til Entities modellen vi brukte, så den opprettet et Queue objekt ut i fra definisjonen i feil modell.

 

Ellers takk for svar :)

Lenke til kommentar

Høres ut som at prosjektet trenger litt bedre orden på sine namespace, kanskje. :)

 

Særdeles mye mulig.

 

Første prosjektet på skolen hvor vi koder flere sammen, så blir veldig fort rotete :whistle:

Lenke til kommentar

Hvis dere ikke har det allerede så anbefaler jeg at gruppen samles og spikrer fast

* versjonskontrollsystem (CVS, SVN og venner)

* kodekonvensjoner (Hvordan skal funksjoner, kontrollstrukturer og løkker se ut. Hvordan skal variabler skrives og funksjoner navngis og hvor mye skal kommenteres)

* navneområder (Hvilke klasser hører sammen og hvordan kan man separerer klasser som ikke direkte hører sammen)

 

Det kan også være en ide å ha grupper av to eller tre som ser igjennom kode som ønskes lagt til prosjektet for å sjekke at det ser fornuftig ut og at det er nok kommentarer slik at man enkelt kan følge koden. Det er også mye enklere å dokumentere ting etterhvert som man lager det enn å skulle gå over koden i ettertid for å dokumentere den.

 

Ja, det vil virke som at det tar lengre tid å få fremdrift, men når ting går galt så vil det være mye enklere å finne årsaken og det vil bli vanskeligere å skyte seg selv i foten.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...