基于特性的映射

LINQ to SQL 通过应用属性或使用外部映射文件将 SQL Server 数据库映射到 LINQ to SQL 对象模型。 本主题概述了基于属性的方法。

在其最基本的形式中,LINQ to SQL 将数据库映射到某个对象,将表映射到类,并将列和关系映射到这些类的属性。 还可以使用属性映射对象模型中的继承层次结构。 有关详细信息,请参阅 如何:在 Visual Basic 或 C# 中生成对象模型

使用 Visual Studio 的开发人员通常使用对象关系设计器执行基于属性的映射。 还可以使用 SQLMetal 命令行工具,也可以自行手动编写属性代码。 有关详细信息,请参阅 如何:在 Visual Basic 或 C# 中生成对象模型

注释

还可以使用外部 XML 文件进行映射。 有关详细信息,请参阅 外部映射

以下部分更详细地介绍了基于属性的映射。 有关详细信息,请参阅 System.Data.Linq.Mapping 命名空间。

DatabaseAttribute 属性

当连接未提供名称时,请使用此属性指定数据库的默认名称。 此属性是可选的,但如果使用它,则必须应用该 Name 属性,如下表所述。

资产 类型 违约 DESCRIPTION
Name 字符串 请参见Name 与属性 Name 一起使用,指定数据库的名称。

有关详细信息,请参阅 DatabaseAttribute

TableAttribute 属性

使用此属性可将类指定为与数据库表或视图关联的实体类。 LINQ to SQL 将此属性视为持久性类的类。 下表描述了该 Name 属性。

资产 类型 违约 DESCRIPTION
Name 字符串 与类名相同的字符串 将类指定为与数据库表关联的实体类。

有关详细信息,请参阅 TableAttribute

ColumnAttribute 属性

使用此属性可指定实体类的成员来表示数据库表中的列。 可以将此属性应用于任何字段或属性。

只有在 LINQ to SQL 保存对数据库的更改时,才会检索和保留标识为列的成员。 不带此属性的成员假定为非持久性成员,不会提交插入或更新。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
AutoSync 自动同步 从不 指示公共语言运行时(CLR)在插入或更新操作后获取值。

选项:Always、Never、OnUpdate、OnInsert。
CanBeNull 布尔型 true 指示列可以包含空值。
DbType 字符串 推断的数据库列类型 使用数据库类型和修饰符指定数据库列的类型。
Expression 字符串 定义数据库中的计算列。
IsDbGenerated 布尔型 false 指示列包含数据库自动生成的值。
IsDiscriminator 布尔型 false 指示该列包含 LINQ to SQL 继承层次结构的歧视性值。
IsPrimaryKey 布尔型 false 指定此类成员表示作为表主键或表主键一部分的列。
IsVersion 布尔型 false 将成员的列类型标识为数据库时间戳或版本号。
UpdateCheck UpdateCheck 除非对某个成员而言 AlwaysIsVersion,否则为 true 指定 LINQ to SQL 如何实现乐观并发冲突的检测。

有关详细信息,请参阅 ColumnAttribute

注释

AssociationAttribute 和 ColumnAttribute Storage 属性值区分大小写。 例如,请确保 AssociationAttribute.Storage 属性 (Property) 的属性 (Attribute) 中使用的值与代码中其他位置使用的相应属性 (Property) 名称值的大小写相匹配。 这适用于所有 .NET 编程语言,即使是通常不区分大小写的编程语言,包括 Visual Basic。 有关 Storage 属性的详细信息,请参阅 DataAttribute.Storage

AssociationAttribute 属性

使用此属性可指定属性来表示数据库中的关联,例如外键与主键关系。 有关关系的详细信息,请参阅 “如何:映射数据库关系”。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
DeleteOnNull 布尔型 false 当放置在其外键成员都不可为 null 的关联上时,当关联设置为 null 时,将删除该对象。
DeleteRule 字符串 没有 向关联添加删除行为。
IsForeignKey 布尔型 false 如果为 true,则将成员指定为表示数据库关系的关联中的外键。
IsUnique 布尔型 false 如果为 true,则表示外键的唯一性约束。
OtherKey 字符串 相关类的 ID 将目标实体类的一个或多个成员指定为关联另一端的键值。
ThisKey 字符串 包含类的 ID 指定此实体类的成员来表示关联这一端的键值。

有关详细信息,请参阅 AssociationAttribute

注释

AssociationAttribute 和 ColumnAttribute Storage 属性值区分大小写。 例如,请确保 AssociationAttribute.Storage 属性 (Property) 的属性 (Attribute) 中使用的值与代码中其他位置使用的相应属性 (Property) 名称值的大小写相匹配。 这适用于所有 .NET 编程语言,即使是通常不区分大小写的编程语言,包括 Visual Basic。 有关 Storage 属性的详细信息,请参阅 DataAttribute.Storage

InheritanceMappingAttribute 属性

使用此属性映射继承层次结构。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
Code 字符串 没有。 必须提供值。 指定鉴别器的代码值。
IsDefault 布尔型 false 如果为 true,则当存储中的判别器值不匹配任何指定值时,实例化此类型的对象。
Type 类型 没有。 必须提供值。 指定层次结构中类的类型。

有关详细信息,请参阅 InheritanceMappingAttribute

FunctionAttribute 属性

使用此属性将方法指定为表示数据库中的存储过程或用户定义的函数。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
IsComposable 布尔型 false 如果为 false,则指示映射到存储过程。 如果为 true,则表示映射到用户定义的函数。
Name 字符串 与数据库中的名称相同的字符串 指定存储过程或用户定义的函数的名称。

有关详细信息,请参阅 FunctionAttribute

ParameterAttribute 属性

使用此属性用于在存储过程方法中映射输入参数。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
DbType 字符串 没有 指定数据库类型。
Name 字符串 与数据库中的参数名称相同的字符串 指定参数的名称。

有关详细信息,请参阅 ParameterAttribute

ResultTypeAttribute 属性

使用此属性可以指定结果类型。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
Type 类型 (无) 用于映射到返回 IMultipleResults 的存储过程的方法。 声明存储过程的有效或预期类型映射。

有关详细信息,请参阅 ResultTypeAttribute

DataAttribute 属性

使用此属性可指定名称和专用存储字段。

下表描述了此属性的属性。

资产 类型 违约 DESCRIPTION
Name 字符串 与数据库中的名称相同 指定表、列等的名称。
Storage 字符串 公共访问器 指定基础存储字段的名称。

有关详细信息,请参阅 DataAttribute

另请参阅