Ik ben bezig om een nested view te maken van een database. Op basis van een uitklapmenu kan er informatie uit twee tables worden bekeken.
Ik heb een Model aangemaakt met daarin de twee tables
Aanspreekpunten en test zijn gedefinieerd in aparte classes:
Vanuit een controller probeer ik nu een view te genereren
Ik krijg echter een error, namelijk
Ik kreeg deze foutmelding ook over de individuele classes (test, Aanspreekpunten). Dit heb ik opgelost door de reference using System.ComponentModel.DataAnnotations toe te voegen, en boven elementen van de tables [Key] te zetten door zo een sleutel te definiëren. Echter na het toevoegen van een sleutel in TestDBViewModel.cs blijf ik de error krijgen.
Waar kan ik de sleutel toekennen?
Ik heb een Model aangemaakt met daarin de twee tables
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using WebApplication1.Models; namespace WebApplication1.ViewModel { public class testDBViewModel { [Key] public Aanspreekpunten aanspreekpunt { get; set; } [Key] public List<test> test { get; set; } } } |
Aanspreekpunten en test zijn gedefinieerd in aparte classes:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| namespace WebApplication1.Models { using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; public partial class Aanspreekpunten { [Key] public int Employee_id { get; set; } public string Aanspreekpunt { get; set; } public string Functie { get; set; } public Nullable<decimal> Telefoonnummer { get; set; } public string E_mailadres { get; set; } } } |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| namespace WebApplication1.Models { using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; public partial class test { [Key] public int test_id { get; set; } public string Naam { get; set; } public string IP_adres { get; set; } public string Protocol { get; set; } public Nullable<bool> Internet_access { get; set; } public string Locatie { get; set; } public string Afdeling { get; set; } public string Netwerkaansluiting { get; set; } public Nullable<decimal> Netwerksnelheid { get; set; } public string MAC_adres { get; set; } public string Functie { get; set; } public string Leverancier_code { get; set; } public string Aanspreekpunt { get; set; } } } |
Vanuit een controller probeer ik nu een view te genereren
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using WebApplication1.ViewModel; using WebApplication1.Models; namespace WebApplication1.Controllers { public class AanspreekpuntController : Controller { // GET: Aanspreekpunt public ActionResult List() { List<TestDBViewModel> allOrder = new List<testDBViewModel>(); // data context using (TestDBEntities dc = new TestDBEntities()) { var o = dc.Aanspreekpunten.OrderByDescending(a => a.Aanspreekpunt); foreach (var i in o) { var od = dc.test.Where(a => a.Aanspreekpunt.Equals(i.Aanspreekpunt)).ToList(); allOrder.Add(new TestDBViewModel { aanspreekpunt = i, test = od }); } } return View(allOrder); } } } |
Ik krijg echter een error, namelijk
code:
1
2
3
| TestDBViewModel: : EntityType 'TestDBViewModel' has no key defined. Define the key for this EntityType. TestDBViewModels: EntityType: EntitySet 'TestDBViewModels' is based on type 'TestDBViewModel' that has no key defined. |
Ik kreeg deze foutmelding ook over de individuele classes (test, Aanspreekpunten). Dit heb ik opgelost door de reference using System.ComponentModel.DataAnnotations toe te voegen, en boven elementen van de tables [Key] te zetten door zo een sleutel te definiëren. Echter na het toevoegen van een sleutel in TestDBViewModel.cs blijf ik de error krijgen.
Waar kan ik de sleutel toekennen?