ASP.NET MVC -SYSTEM.DATA.DATASET 참조 문제가 없습니다
-
05-07-2019 - |
문제
글쎄, 우선이 질문에 대해 죄송합니다. 여러분에게는 매우 간단해야하지만 저는 저 자신에게 고군분투하고 있습니다. 그리고 나는 그것을 작동시켜야합니다 :( 글쎄, 나는 내 응용 프로그램에서 데이터 세트를 사용하려고 노력하고 있습니다.
그리고 내가 그것을 렌더링 할 때 나는 얻었다 :
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를 추가하십시오 .. 작동 할 수 있습니다 ..