2010-08-10 3 views
2

저는 데이터베이스에 연결하고 엔티티 프레임 워크를 이용하는 ASP.NET MVC (C#에서) 사이트에서 작업하고 있습니다. 나는 사람들이 사이트에서 데이터베이스의 정보를 수정할 수 있기를 바란다. (왜냐하면 데스크톱 MVC 사이트를 통해 데이터를 표시하고 검증하는 것이 훨씬 쉬우면서 배포하기가 훨씬 쉬워 보이기 때문이다. 할 수있는 도구). 그런 다음 사용자가 만든 데이터베이스를 XML 파일로 내보내고 내가 만든 데스크톱 응용 프로그램에서로드 할 수있게하려고합니다. 데이터베이스의 데이터를 나타내는 엔티티 프레임 워크에서 만든 클래스를 XML 파일에 직렬화하는 쉬운 방법이 있는지 궁금합니다. 그런 다음 데스크톱 응용 프로그램에서 생성 된 동일한 코드를 다시 사용하여 해당 XML 파일을 읽고 해당 프로그램에서 사용할 데이터를 나타내는 개체를 만들 수 있습니까?ASP.NET MVC 사이트의 엔터티를 XML로 직렬화하려면 어떻게해야합니까?

데이터베이스를 어떻게 든 내보내고 xml 파일 대신 클라이언트 컴퓨터의 로컬 데이터베이스에서 읽은 동일한 코드를 사용하면 더 쉽습니다 (클라이언트 컴퓨터가 인터넷에 액세스하지 못할 수 있으므로 데이터를 로컬에 저장해야합니까?)

다른 점이 있으십니까? 귀하의 모든 의견에 미리 감사드립니다 !!!

답변

3

Xml- 시리얼 라이저 만 있으면됩니다. 내가 발견하고 내 XML-응답을 약간 쥐게 한이 XmlResult-클래스를 사용하고 필요 :

public class XmlResult : ActionResult 
{ 
    private object objectToSerialize; 

    /// <summary> 
    /// Initializes a new instance of the <see cref="XmlResult"/> class. 
    /// </summary> 
    /// <param name="objectToSerialize">The object to serialize to XML.</param> 
    public XmlResult(object objectToSerialize) 
    { 
     this.objectToSerialize = objectToSerialize; 
    } 

    /// <summary> 
    /// Gets the object to be serialized to XML. 
    /// </summary> 
    public object ObjectToSerialize 
    { 
     get { return this.objectToSerialize; } 
    } 

    /// <summary> 
    /// Serialises the object that was passed into the constructor to XML and writes the corresponding XML to the result stream. 
    /// </summary> 
    /// <param name="context">The controller context for the current request.</param> 
    public override void ExecuteResult(ControllerContext context) 
    { 
     if (this.objectToSerialize != null) 
     { 
      context.HttpContext.Response.Clear(); 
      XmlRootAttribute root = new XmlRootAttribute("response"); 

      var xs = new System.Xml.Serialization.XmlSerializer(this.objectToSerialize.GetType(), root); 
      context.HttpContext.Response.ContentType = "text/xml"; 

      xs.Serialize(context.HttpContext.Response.Output, this.objectToSerialize); 
     } 
    } 

를 그리고, 당신이 당신의 작업에서 XML을 반환 할 때마다 간단하게 수행 할 수 있습니다

public ActionResult GetStuffAsXml(int id) 
{ 
    var dbStuff = db.GetStuff(id); 
    // fetch stuff in database 
    return new XmlResult(dbStuff); 
} 

희망이 도움이됩니다.

+0

도움이된다. 고마워! 직렬화 된 XML을 객체로 역순으로 변환하는 것은 어떻습니까? – Evan

+0

Xmlserializer의 Deserialize 메서드를 확인하십시오. XML이 개체와 일치하는 한 꽤 간단합니다 ... –

1

은 당신이 당신이 데이터의 처리를 단순화 할 수 있습니다 WCF를 사용하지 않을 때 WCF 속성을 추가 할 필요가 있지만 xml serializer WCF documentation

를 시작하는 데이 두 링크를 시도하십시오. 제 생각에는 일반적으로 신뢰할 수있는 라이브러리에이 정보를 전달하는 것이 좋습니다. 세부 정보에서 수렁에 빠지지 않도록 할 수 있습니다.

+0

링크를 이용해 주셔서 감사합니다! – Evan

관련 문제