我编写了一个使用 SQL SERVER 数据库的 ASP.NET 应用程序。在修改数据库期间,一位经验丰富的 .NET+DBMS 专家表示,关联/映射多个表的问题之一可以通过 .NET XML 字符串优雅地解决。我从来没有听说过这种技术,但不要听起来对这种“黑客”一无所知,我不能问他。有没有办法像常规数据库表一样插入/更新/删除 XML 字符串(不使用 Linq to XML)?
问问题
143 次
2 回答
0
I am not sure what he meant, but it's possible to serialize
your object to XML
and pass the XML
as a parameter to a Stored Procedure
.
DECLARE @PersonJobsXML XML
SELECT @PersonJobsXML = '<PersonJobs>
<PersonId>24234</PersonId>
<Job>
<JobTitle>Engineer I</JobTitle>
<CompanyName>ACME</CompanyName>
</Job>
<Job>
<JobTitle>Engineer II</JobTitle>
<CompanyName>World Inc.</CompanyName>
</Job>
<Job>
<JobTitle>Engineer II</JobTitle>
<CompanyName>Tek Corp</CompanyName>
</Job>
</PersonJobs>'
SELECT PersonJobs.Job.value('../PersonId[1]', 'INT') AS PersonId
, PersonJobs.Job.value('JobTitle[1]', 'VARCHAR(200)') AS JobTitle
, PersonJobs.Job.value('CompanyName[1]', 'VARCHAR(200)') AS CompanyName
FROM @PersonJobsXML.nodes('//PersonJobs/Job') AS PersonJobs ( Job )
This allows you to pass a list of object to the database with just one call; the downside is that the size could be quite limited
But If you are using SQL server 2008 you should look at Table-Valued Parameters
: see Table Value Parameters in SQL Server 2008 and .NET (C#)
于 2012-11-29T21:32:05.887 回答