实现接口的 LINQ to SQL 类

Posted

技术标签:

【中文标题】实现接口的 LINQ to SQL 类【英文标题】:LINQ to SQL Classes implementing an interface 【发布时间】:2012-01-05 20:57:23 【问题描述】:

我正在使用 LINQ to SQL (O/R) 设计器为应用程序设计数据模型,我想知道:是否可以让(许多)类实现接口或基类并将实现的字段值存储在数据库?

我的大多数类(如果不是全部)都需要存储描述对象元数据的公共字段,例如对象的创建时间和创建者、对象是否被删除以及上次修改的时间......理想情况下,这些字段只进入数据库中实现类表的列中。

我知道在 .dbml 文件中指定全局基类或接口的选项,但这不是很优雅,因为我会有一些不实现接口的 L2S 类。

我知道使用 NHibernate 之类的东西很容易做到这一点。我只是想看看是否有办法用 LINQ to SQL 以一种优雅的方式做到这一点。

任何指针?

【问题讨论】:

【参考方案1】:

是的,这是可能的。只需添加带有部分对应类的单独代码文件并在那里实现您的接口。

【讨论】:

我是否必须指定任何属性才能让 L2S 看到它们是需要进入数据库的字段? 是的。从任何现有数据库创建模型并查看自动生成的属性。您将很快发现那里发生了什么,并能够在您自己的课程中重现它。

以上是关于实现接口的 LINQ to SQL 类的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL活学活用:这要打破旧观念

用Linq To SQL 搭建底层

不支持接口映射,但Linq-Sql对象已经实现了属性

LinQ to SQL 查询

LINQ to SQL 中 ConcatUnionIntersectExcept 方法的使用

Linq to SQL 中的 DAO 工厂