1

在 SQL 服务器上,我创建了一个 UDF。我们将其命名为 fnCompanyDetails。它从几个联合表中选择有关一家公司的一些信息。然后我将这个函数拖放到我的 VB 项目的新 .dbml 中。我想将它与 LINQ 一起使用。像这样:

Dim company = (From c In d.fnCompanyDetails(sap)

                    Select New With {

        .Sap = c.txtSAP,

        .CompanyName1 = c.txtCompanyName1, _

        .CompanyName2 = c.txtCompanyName2, _

        })

我以表单的形式向用户显示此查询的结果。如果更改了某些字段,我想将更改发送到我的数据库,但是如果我像这样从 UDF 查询,这可能吗?谢谢你

4

1 回答 1

1

不,不幸的是,不可能以简单的方式进行。Linq-to-sql 支持读取自定义类型,但仅支持通过与表完全对应的实体类型进行更新。

通常最好的方法是总是读取纯实体对象,如果它们被读取是为了更新它们。

另一种解决方案是从 udf 返回的数据中创建实体对象,然后将这些实体附加到上下文中。如果您先附加原始状态的实体,然后在附加后进行更改您应该不会遇到任何更改跟踪问题。

于 2012-03-07T09:31:57.977 回答