2011-08-10 3 views
0

XML 필드가있을 때 datacontext 또는 LINQ를 사용할 수 있습니까? 우리는 xml 필드를 성공적으로 업데이트하지만 일단 db에 있으면 위의 오류로 인해 다른 필드를 업데이트 할 수 없습니다. 우리는 엔티티에 (UpdateCheck = UpdateCheck.Never) 설정을 시도했지만 이것은 XML이 삽입되지 않는다는 것을 의미합니다. 우리가 누락 된 옵션이나 옵션을 둘러싼 방법이 있습니까?Linq to SQL 오류 SQL이 XML을 비교하지 못합니까?

테이블 우리는 추가하는 시도

CREATE TABLE [Header] 
(
    ID int NOT NULL IDENTITY (1, 1), 
    FileName varchar(50) NOT NULL, 
    XMLData xml NOT NULL, 
    StatusID int NOT NULL, 
    TypeID int NOT NULL, 
    CreatedDate DateTime NOT NULL Default getdate(), 
    LastUpdatedDate DateTime NOT NULL Default getdate() 
) ON [PRIMARY] 

엔티티, 아래 (UpdateCheck = UpdateCheck.Never) 그것도 XML 삽입 결코이다.

[Table(Name = "Header")] 
public class HeaderEntity 
{ 
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] 
    public int ID { get; set; } 
    [Column] 
    public String FileName { get; set; } 
    [Column] 
    public XDocument XMLData { get; set; } 
    [Column] 
    public int StatusID { get; set; } 
    [Column] 
    public int TypeID { get; set; } 
    [Column] 
    public DateTime LastUpdatedDate { get; set; } 
} 

이 방법은 작동하지만 xmldata는 비어 있으며이 방법은이를 추가합니다.

public void UploadHeaderXML(HeaderEntity HeaderEntityNew) 
    { 
     String ConnectionString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 
     var dataContext = new DataContext(new SqlConnection(ConnectionString)); 

     HeaderEntity HeaderEntitytoUpdate = dataContext.GetTable<HeaderEntity>().Single(p => p.ID == HeaderEntityNew.ID); 
     HeaderEntitytoUpdate.XMLData = HeaderEntityNew.XMLData; 

     dataContext.SubmitChanges(); 
    } 

이 메서드는 오류 Linq 오류를 제공합니다. SQL SQL은 XML과 비교하지 않습니다.

public void UpdateAudit(Int32 ID, Int32 auditID) 
    { 
     String ConnectionString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 
     var dataContext = new DataContext(new SqlConnection(ConnectionString)); 

     HeaderEntity HeaderEntitytoUpdate = dataContext.GetTable<HeaderEntity>().Single(p => p.ID == ID); 
     HeaderEntitytoUpdate.StatusID = auditID; 

     dataContext.SubmitChanges(); 
    } 

답변

0

xml이 업데이트되도록 업데이트를 변경했습니다. 그러나 tidier 해결책이있는 경우에, 나는 응답으로 그것을 받아 들일 것입니다.

public void UpdateAudit(Int32 rpaID, Int32 auditID) 
    { 
     String ConnectionString = ConfigurationManager.ConnectionStrings["RPADB"].ConnectionString; 
     var dataContext = new DataContext(new SqlConnection(ConnectionString)); 

     RPAHeaderEntity RPAHeaderEntitytoUpdate = dataContext.GetTable<RPAHeaderEntity>().Single(p => p.RPAID == rpaID); 
     RPAHeaderEntitytoUpdate.RPAStatusID = auditID; 
     RPAHeaderEntitytoUpdate.XMLData = new XDocument(RPAHeaderEntitytoUpdate.XMLData);** 


     dataContext.SubmitChanges(); 
    }