将“额外数据”添加到 LINQ to SQL 生成的实体?

Posted

技术标签:

【中文标题】将“额外数据”添加到 LINQ to SQL 生成的实体?【英文标题】:Add "extra data" to LINQ to SQL generated entity? 【发布时间】:2009-03-04 07:25:58 【问题描述】:

我有一个名为 Job 的 LINQ to SQL 实体,它只是 SQL 中的一个简单表。大多数时候它可以满足我的需要,但有时我需要在这个实体中填充更多字段。我知道我可以使用部分类向 LINQ 生成的类添加新字段,但我的问题是如何填充这些额外数据?例如,我有一个存储过程,它可以拉回 Job 表的所有值以及我需要填充的额外数据。我想加入实体填充例程,当这个数据存在时,填充它,当它不存在时,忽略它。我知道简单的解决方案是创建一个视图,但我不喜欢那个解决方案。

我似乎无法弄清楚 LINQ 在哪里获取数据并填充实体。有人有什么想法吗?

【问题讨论】:

【参考方案1】:

(大胆猜测)您也许可以从 SQL 视图创建实体。使用连接等在数据库中创建视图,例如在 SP 中,然后将该视图添加到 LINQ 设计器,它应该创建一个具有您需要的所有装备的实体。

(更好)创建一个代表您的完整实体(带有可选字段)的类并映射到许多实体(您目前拥有)作为流程中的另一个步骤。更长的时间因为你可能想要创建另一层抽象来做到这一点......然后更进一步你可能想要抽象你的整个实体集等等。所以它更多的工作......但它让你更接近到一个更干净的领域模型(如果这是你想要的)。

【讨论】:

是的,我不喜欢解决方案一,因为它添加了额外的实体。解决方案二的问题是它需要我查询我的数据库两次,这是我希望避免的。 第二个选项不需要 2 个 sql 查询。在此示例中,您将创建到 -same datacontext- 内的 LINQ 实体的映射。然后 LINQ 将在单个 sql 查询中创建适当的连接等。

以上是关于将“额外数据”添加到 LINQ to SQL 生成的实体?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时将实体对象添加到 LINQ-to-SQL 数据上下文 - SQL、C#(WPF)

实体框架/Linq to sql 模型到业务模型

已安装LINQ2SQL,但类库项目中的“添加新项”列表中缺少LINQ To SQL类

数据访问层 - LINQ-To-SQL 和泛型。我可以优化这个吗?

Linq-To-Sql 尝试插入父实体而不是子实体

LINQ to SQL 增,删,改