【问题标题】:LINQ use with XMLLINQ 与 XML 一起使用
【发布时间】:2009-10-28 10:23:21
【问题描述】:

我们有一个使用 LINQ 访问 DB 层 (MS SQL) 的项目。我们现在可以将我们的 DB 层更改为 XML 文件 并仍然使用相同的 LINQ 访问它吗?

我们希望增加将数据存储在单个 XML 文件或一组 XML 文件中的可能性。

当前的 LINQ to SQL 代码如下所示:

result = (from e in db.Organizations
          where e.Id == idOrganization
          select e).SingleOrDefault();

 result = (from e in db.Organizations
           where e.Name.Trim().ToUpper() == organizationName.Trim().ToUpper()
               && e.Id!=idCurrentOrganization
           select e).Count()>0;

【问题讨论】:

    标签: .net xml linq-to-sql linq-to-xml


    【解决方案1】:

    LINQ to SQL 和 LINQ to XML 有相似之处,但并不完全相同。可以编写 LINQ 查询以便以相同的方式使用它们,但查询本身的代码可能需要更改。

    您能否举例说明您当前的 LINQ to SQL 代码是什么样的?包括您正在使用的数据类型以及您希望如何格式化 XML 的示例可能会帮助这里的人们给出更具体的指示。

    编辑:您的第一个查询似乎返回了一个对象。如果您的 LINQ to SQL 和 LINQ to XML 都返回相同的类型,那么您可以在不更改使用结果的代码的情况下交换它们。

    您的第二个查询似乎返回一个布尔值,所以同样的概念也适用于那个。解决方案中其他地方的代码不会关心该 bool 是如何设置的。

    Mike 建议为您的数据访问层使用接口是可行的方法。对于您的 2 个示例,您将拥有一个包含组织对象和布尔值的接口。您的 SQL 和 XML 实现会有所不同,但您的代码的所有其他部分只需要知道如何使用接口。

    【讨论】:

    • 谢谢。我会尽快添加详细信息。
    【解决方案2】:

    您还需要做一个额外的步骤:您必须先将 XML 加载到 XDocument(或者如果我没记错的话是 XNode)中,然后才能查询数据。

    之后,只需使用 LINQ to XML 语法在树中选择节点即可。

    不幸的是,没有 LINQ 语法可以让您同时查询并让您透明地插入 XML 或 DB。

    附言。选择节点时要注意 XML 命名空间,可能会很头疼!

    PS2。抱歉我手头没有代码

    PS3。我建议您的数据库层从接口派生,这样您就可以 能够轻松地从 XML 切换到 DB,反之亦然

    希望对你有帮助

    【讨论】:

    • 谢谢。我会尽量按照你在 PS3 中说的去做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多