문제

글쎄, 우선이 질문에 대해 죄송합니다. 여러분에게는 매우 간단해야하지만 저는 저 자신에게 고군분투하고 있습니다. 그리고 나는 그것을 작동시켜야합니다 :( 글쎄, 나는 내 응용 프로그램에서 데이터 세트를 사용하려고 노력하고 있습니다.

그리고 내가 그것을 렌더링 할 때 나는 얻었다 :

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

내 응용 프로그램 시스템에서 데이터는 이미 C : Windows Microsoft.net Framework V2.0.50727 System.Data.dll에서 참조되었습니다.

그리고 나는 조항을 사용하는 것도 사용하고 있습니다

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

이 데이터 세트는 웹 서비스의 응답 이므로이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

추신. 도움이 될지 모르겠지만 Nhaml을 사용하여 내 견해를 렌더링합니다.

정말 감사합니다


업데이트:

내가 찾은 유일한 솔루션은 대신 데이터 세트를 뷰 변환기로 전달하는 것이 었습니다.

<List<List<String>>

그리고 이와 같은 전체 데이터 세트를 통해 루프를 전달하십시오.

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);

사실 이건 완전히 미쳤어?

데이터 세트를 직접 사용하는 경우이 모든 작업이보기에 쉽게 수행 될 수 있습니다. 누구나 더 단순한 방법으로 나를 도울 수 있기를 바랍니다.

고맙습니다 :)


업데이트 (솔루션)

Simon의 답변은 실제로 효과적이었고 System.data 및 System.xml에 네임 스페이스를 추가 한 후 첫 번째 시도에서 작동했지만 동시에 Josh의 답변은 데이터 세트를 사용하는 매우 멋지고 멋진 방법을 제시합니다. 그리고 나는 지금 그것을 위해 갈 것이라고 생각합니다.

도와 주셔서 감사합니다

도움이 되었습니까?

해결책

NHAML 구성에 System.Data에 대한 명시 적 참조를 추가 해보세요.

<?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>

분명히 "..."를 다른 참조 및 구성으로 대체합니다.

다른 팁

내가 생각할 수있는 유일한 것은 페이지의 맥락에서 System.Data 참조가 표시되지 않는다는 것입니다.

Web.config에 네임 스페이스를 추가 해보세요 :

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

나는 그것이 당신의 질문의 일부가 아니라는 것을 알고 있지만, 나는 당신의 데이터 가능의 필드를 나타내는 속성으로 가득 찬 클래스를 구축하는 것이 좋습니다. LINQ를 사용하면 행을 클래스 객체로 쉽게 변환하여 목록을 반환 할 수 있습니다. 다음은 거친 (그리고 충돌하지 않은) 코드입니다.

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

웹 서비스가 XML 또는 JSON으로 반환 할 수 있도록 직렬화 가능하기를 원합니다 (그러나 반환 중). LINQ는 다음과 같이 보입니다.

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

return result.ToList();

내 개인적인 경험에서 데이터 세트는 자원 돼지 인 경향이 있습니다. 또한 LINQ는 루프보다 효율적입니다.

도움이 되었기를 바랍니다.

Reffrence (System.Data)를 삭제하고 다시 동일한 reffrence를 추가하십시오 .. 작동 할 수 있습니다 ..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top