Pass List jako XElement do użycia jako parametr typu danych XML
Mam procedurę składowaną w SQL Server
CREATE PROCEDURE ParseXML (@InputXML xml)
Typ danych dla parametru wejściowego to „xml”.
W wygenerowanym kodzie LINQ na SQL dla procedury składowanej parametrem wejściowym jest System.Xml.Linq.XElement
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.ParseXML")]
public ISingleResult<ParseXMLResult> ParseXML([global::System.Data.Linq.Mapping.ParameterAttribute(Name="InputXML", DbType="Xml")] System.Xml.Linq.XElement inputXML)
Jak mogę przekazać następującą listę do metody ParseXML, aby procedura składowana działała?
EDYTOWAĆ:
Po przeczytaniu odpowiedzi - inne rozwiązanie znajduje się poniżej
XElement root = new XElement("ArrayOfBankAccountDTOForStatus",
new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"));
foreach (var element in bankAccountDTOList)
{
XElement ex= new XElement("BankAccountDTOForStatus",
new XElement("BankAccountID", element.BankAccountID),
new XElement("Status", element.Status));
root.Add(ex);
}
KOD W pytaniu
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
var theDataContext = new DBML_Project.MyDataClassesDataContext(connectionstring);
List<DTOLayer.BankAccountDTOForStatus> bankAccountDTOList = new List<DTOLayer.BankAccountDTOForStatus>();
DTOLayer.BankAccountDTOForStatus presentAccount1 = new DTOLayer.BankAccountDTOForStatus();
presentAccount1.BankAccountID = 5;
presentAccount1.Status = "FrozenF13";
DTOLayer.BankAccountDTOForStatus presentAccount2 = new DTOLayer.BankAccountDTOForStatus();
presentAccount2.BankAccountID = 6;
presentAccount2.Status = "FrozenF23";
bankAccountDTOList.Add(presentAccount1);
bankAccountDTOList.Add(presentAccount2);
//theDataContext.ParseXML(inputXML);
Wymagana struktura XML
Uwaga: Ten XML jest używany do niektórych operacji, a nie do bezpośredniego przechowywania w bazie danych jako XML. Muszę napisać wybrane zapytanie, które wyświetli dane z XML.
Logika procedur składowanych
DECLARE @MyTable TABLE (RowNumber int, BankAccountID int, StatusVal varchar(max))
INSERT INTO @MyTable(RowNumber, BankAccountID,StatusVal)
SELECT ROW_NUMBER() OVER(ORDER BY c.value('BankAccountID[1]','int') ASC) AS Row,
c.value('BankAccountID[1]','int'),
c.value('Status[1]','varchar(32)')
FROM
@inputXML.nodes('//BankAccountDTOForStatus') T(c);
CZYTANIE
Jak serializować i zapisywać obiekt w bazie danych jako Xml, używając Linq do SQL
Jak użyć zapytania LINQ, aby uzyskać wartości XElement, gdy XElements mają tę samą nazwę