Cemi Skrevet 1. april 2011 Del Skrevet 1. april 2011 (endret) 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 2. april 2011 av Cemi Lenke til kommentar
BlueEAGLE Skrevet 1. april 2011 Del Skrevet 1. april 2011 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
Cemi Skrevet 1. april 2011 Forfatter Del Skrevet 1. april 2011 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. Takk for svar uansett Lenke til kommentar
GeirGrusom Skrevet 2. april 2011 Del Skrevet 2. april 2011 Hva gjør AddObject? Jeg forstår ikke logikken i koden din. Lenke til kommentar
Cemi Skrevet 2. april 2011 Forfatter Del Skrevet 2. april 2011 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
BlueEAGLE Skrevet 2. april 2011 Del Skrevet 2. april 2011 Høres ut som at prosjektet trenger litt bedre orden på sine namespace, kanskje. Lenke til kommentar
Cemi Skrevet 2. april 2011 Forfatter Del Skrevet 2. april 2011 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 Lenke til kommentar
BlueEAGLE Skrevet 2. april 2011 Del Skrevet 2. april 2011 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå