login  Naam:   Wachtwoord: 
Registreer je!
 Forum

LinQ to entities relaties (Opgelost)

Offline Martijn2008 - 13/03/2011 12:18
Avatar van Martijn2008PHP beginner Hallo allemaal,

Voor een project maak ik gebruik van LinQ to entities om connectie te maken met een database. De database bestaat uit een aantal tabellen met foreign keys(relaties) ertussen.

Het volgende probleem doet zich voor: De foreign key (waarnaar de relatie van de huidige tabel verwijst) kan ik niet setten. Iemand enig idee hoe dit kan?

  1. User user = new User()
  2. {
  3. Role.RoleID = 1, // Deze opzet werkt niet
  4. username = txt_username.Text,
  5. password = txt_password1.Text
  6. };


Dank alvast!

Martijn

8 antwoorden

Gesponsorde links
Offline Abbas - 13/03/2011 13:22
Avatar van Abbas Gouden medaille

Crew .NET
Dan moet je eens kijken naar de eigenschappen in je model 'Role', en controleren of je 'RoleID' wel kan setten. Als dit niet het geval is moet je je DB wijzigen. 
Offline Martijn2008 - 13/03/2011 13:36 (laatste wijziging 13/03/2011 13:37)
Avatar van Martijn2008 PHP beginner Ik wil de primary key van tabel role niet setten, want die is unique en wordt constant met 1 opgehoogd. Ik wil attribuut RoleID in tabel User setten. Maar dat lukt om een 1 of andere vage reden niet. Waarschijnlijk omdat dit een foreign key is en verwijst naar tabel Role en attribuut RoleID. Dus eigenlijk had ik dit in gedachte

  1. User user = new User()
  2. {
  3. RoleID = 1, // Deze opzet werkt niet
  4. username = txt_username.Text,
  5. password = txt_password1.Text
  6. };
Offline Abbas - 13/03/2011 13:39
Avatar van Abbas Gouden medaille

Crew .NET
Wat doet die 'Role' er dan voor?! 

  1. public class Role
  2. {
  3. public int RoleID { get; private set; }
  4. public String Name { get; private set; }
  5. }
  6.  
  7. public class User
  8. {
  9. public int Id {get;set;}
  10. public int UserRoleID {get;set;}
  11. //...
  12. }
  13.  
  14. //==> gebruik
  15. var user = new User { UserRoleID = 1 };
Offline lemoinet - 13/03/2011 13:43
Avatar van lemoinet PHP gevorderde wanneer je een nieuwe user aanmaakt, moet je ook een nieuwe role aanmaken
  1. User user = new User()
  2. {
  3. Role = new Role{
  4. RoleID = 1
  5. },
  6. username = txt_username.Text,
  7. password = txt_password1.Text
  8. };
Offline Martijn2008 - 13/03/2011 13:49 (laatste wijziging 13/03/2011 14:16)
Avatar van Martijn2008 PHP beginner Aan bovenstaande opzet kan ik nu aan property RoleID een waarde meegeven. Nu krijg ik de volgende error:

  1. SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.


Deze foutmelding heb ik niet bij andere tabellen in mijn database gehad, dus dat de tijdzone op het systeem niet goed staan lijkt me een beetje onlogisch. Misschien schept onderstaande SQL-code meer duidelijkheid.

  1. CREATE TABLE Role
  2. (
  3. RoleID INT PRIMARY KEY IDENTITY,
  4. [Name] VARCHAR(50) NOT NULL,
  5. [Time] DATETIME NOT NULL
  6. )
  7.  
  8. CREATE TABLE User
  9. (
  10. UserID INT PRIMARY KEY IDENTITY,
  11. RoleID INT FOREIGN KEY REFERENCES Role(RoleID) ON UPDATE CASCADE ON DELETE CASCADE,
  12. Username VARCHAR(50) NOT NULL,
  13. Password VARCHAR(50) NOT NULL
  14. [Time] DATETIME NOT NULL
  15. )
Offline lemoinet - 13/03/2011 14:31
Avatar van lemoinet PHP gevorderde waarschijnlijk set je Time niet

  1. User user = new User()
  2. {
  3. Role = new Role{
  4. RoleID = 1
  5. },
  6. username = txt_username.Text,
  7. password = txt_password1.Text,
  8. Time = DateTime.Now
  9. };
Bedankt door: Martijn2008
Offline Martijn2008 - 13/03/2011 14:46
Avatar van Martijn2008 PHP beginner Geprobeerd, maar werkt helaas niet. Zou het niet iets met die time in tabel role te maken kunnen hebben?
Offline lemoinet - 13/03/2011 14:48
Avatar van lemoinet PHP gevorderde ook daar moet je hem setten
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s