Pergunta

Bem, primeiro de tudo muito sobre esta questão deve ser bastante simples para vocês, mas eu estou me esforçando sobre ele, e eu preciso para fazê-lo funcionar :( Bem, eu estou tentando UTILIZAR DataSet no meu aplicativo

e quando eu torná-lo eu tenho:

The type 'System.Data.DataSet' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data

no meu aplicativo System.Data já está sendo referenciado a partir de C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Data.dll

e eu estou usando no meu usando cláusulas bem

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;

Este conjunto de dados é uma resposta de um Webservice Assim, todas as idéias sobre como corrigir este problema?

PS. Não sei se isso ajuda, mas eu estou usando NHaml para tornar meu ponto de vista

Muito obrigado


UPDATE:

A única solução que eu encontrei agora foi a vez de passar um DataSet para a visão converter o DataSet a um

<List<List<String>>

e passar um loop através de todo o DataSet como este

List<List<String>> myList = new List<List<String>>();

foreach (DataRow row in dsTrades.Tables[0].Rows)
{
    List<String> myListColumns = new List<String>();

    for (var index = 0; index < dsTrades.Tables[0].Columns.Count; index ++)
    {
        myListColumns.Add(row[index].ToString());
    }

    myList.Add(myListColumns);
}

// THIS SHOULD BE THE DATASET AND NOW 
// IT'S CONVERTED TO A LIST WITH STRINGS LIST INSIDE
viewModel.Trades = myList; 

return View(viewModel);

Na verdade este é ins't completamente louco isso?

Todos este trabalho poderia ser feito facilmente para a vista se estiver usando DataSet diretamente Espero que alguém pode me ajudar com uma forma mais simplista para fazê-lo

Obrigado:)


UPDATE (SOLUÇÃO)

A resposta de Simon era realmente eficaz e funcionou na primeira tentativa depois de adicionar namespaces para System.Data e System.Xml mas, ao mesmo tempo, de Josh resposta presente muito agradável e fresco maneira de trabalhar com conjuntos de dados, que na minha opinião funciona muito melhor e eu acho que vou ir para ele agora.

Obrigado por você ajuda

Foi útil?

Solução

tente adicionar uma referência explícita ao System.Data em sua NHaml de configuração

<?xml version="1.0"?>

<configuration>
...
    <configSections>
            <section name="nhaml" type="NHaml.Configuration.NHamlConfigurationSection, NHaml"/>
    </configSections>
...
<nhaml autoRecompile="true">
            <assemblies>
                    <clear/>
                    ...
                    <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            </assemblies>
            <namespaces>
                    <clear/>
                    ...
                    <add namespace="System.Data"/>
            </namespaces>
    </nhaml>

obviamente substituindo "..." com suas outras referências e configuração

Outras dicas

A única coisa que eu poderia pensar é que, no contexto da página, a referência System.Data não é visível.

Tente adicionar o namespace no seu web.config:

<pages>
   <controls />
   <namespaces>
      <add namespace="System.Data"/>
   </namespaces>
</pages>

Eu sei que não é realmente parte da sua pergunta, mas eu recomendaria a construção de uma classe cheia de propriedades representando os campos em sua tabela de dados. Usando Linq, você pode facilmente converter suas linhas no objeto de classe e retornar uma lista deles. Aqui está um pouco áspera (e uncompiled) código.

[Serializable]
public class MyClass
{
   public string Property1 { get; set; }
   public string Property1 { get; set; }
}

Você quer que ele seja serializado para que o seu serviço web pode devolvê-lo como XML ou JSON (no entanto você está devolvendo-o). O LINQ seria algo parecido com isto:

var result = from r in dataSet.Table[0].Rows.AsEnumerable()
             select new MyClass() {
                Property1 = r["Field1"].ToString()
                Property2 = r["Field2"].ToString()
             };

return result.ToList();

Na minha experiência pessoal, conjuntos de dados tendem a ser devoradores de recursos. Além disso, Linq será mais eficiente do que o seu para loops.

Espero que isso ajude.

Excluir a referência (system.Data) ..e Adicionar a mesma referência de novo .. ele pode ser um trabalho ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top