Come faccio a caricare una parte di classe utilizzando LINQ to SQL, senza classe anonima o classe aggiuntiva?

StackOverflow https://stackoverflow.com/questions/3013508

Domanda

class Test { 
  int Id{get;set;} 
  string Name {get;set;} 
  string Description {get;set;}
}

//1)ok
context.Tests.Select(t => new {t.Id, t.Name}).ToList().Select(t => new Test{Id = t.Id,
Name = t.Name});

//2)ok
class TestPart{
  int Id{get;set;}
  string Name {get;set;}
}
context.Tests.Select(t => new TestPart{Id = t.Id,
Name = t.Name}).ToList().Select(t => new Test{Id = t.Id,
Name = t.Name});

//3)error Explicit construction of entity type 'Test' in query is not allowed.
context.Tests.Select(t => new Test{Id = t.Id,
Name = t.Name}).ToList();

C'è un modo per utilizzare terza variante?

È stato utile?

Soluzione

Se la classe di test non viene utilizzato per la scrittura dei dati, è possibile disattivare l'oggetto di monitoraggio rimuovendo la chiave primaria nella dbml. Se le istanze di Test non vengono monitorati per i cambiamenti, allora siete liberi di new-up come molti come ti piace nella query.

http: / /social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/1ce25da3-44c6-407d-8395-4c146930004b

Si supponga che si desidera avere una classe di test che si può carico parziale, e una classe di test che è possibile scrivere indietro con. Basta eliminare la tabella di prova nella finestra di progettazione per due volte, e togliere la chiave primaria da uno di loro.

Altri suggerimenti

Fornire una conversione implicita su entrambi TestPart o Test dovrebbe fare il trucco qui. Si potrebbe anche prendere in considerazione derivante dal test TestPart, come prova viene semplicemente estendendo TestPart. Con questo, non c'è bisogno di definire la conversione implicita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top