基于特性的映射

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

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

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

备注

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

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

DatabaseAttribute 属性

使用此属性可指定在连接未提供名称时数据库的默认名称。 此属性 (Attribute) 是可选的,但如果使用它,则必须按照下表中的说明应用 Name 属性 (Property)。

属性 类型 默认 说明
Name String 请参见Name 与其 Name 属性一起使用,用于指定数据库的名称。

有关详细信息,请参阅 DatabaseAttribute

TableAttribute 属性

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

属性 类型 默认 说明
Name String 与类名相同的字符串 将类指定为与数据库表关联的实体类。

有关详细信息,请参阅 TableAttribute

ColumnAttribute 属性

使用此属性可指定实体类的某个成员表示数据库表中的列。 您可以将此属性 (Attribute) 应用于任何字段或属性 (Property)。

当 LINQ to SQL 保存对数据库所做的更改时,只会检索并持久保存您标识为列的那些成员。 不具有此属性的成员被假定为非持久的,且不会被提交以进行插入或更新。

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 说明
AutoSync AutoSync 从不 指示公共语言运行库 (CLR) 在执行插入或更新操作后检索值。

可供选择的值:Always、Never、OnUpdate、OnInsert。
CanBeNull 布尔 true 指示列可以包含 null 值。
DbType String 推断出的数据库列类型 使用数据库类型和修饰符来指定数据库列的类型。
Expression String 定义数据库中计算所得的列。
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 属性

使用此属性 (Attribute) 可指定属性 (Property) 表示数据库中的关联,如外键对主键关系。 有关关系的详细信息,请参阅如何:映射数据库关系

下表介绍了此属性 (Attribute) 的属性 (Property)。

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

有关详细信息,请参阅 AssociationAttribute

注意

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

InheritanceMappingAttribute 属性

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

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 说明
Code String 无。 必须提供值。 指定鉴别器的代码值。
IsDefault 布尔 false 如果为 true,则在存储区中没有与指定值中的任何一个值匹配的鉴别器值时实例化此类型的对象。
Type 类型 无。 必须提供值。 指定层次结构中的类的类型。

有关详细信息,请参阅 InheritanceMappingAttribute

FunctionAttribute 属性

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

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 描述
IsComposable Boolean false 如果为 false,则指示映射到存储过程。 如果为 true,则指示映射到用户定义的函数。
Name String 与数据库中的名称相同的字符串 指定存储过程或用户定义函数的名称。

有关详细信息,请参阅 FunctionAttribute

ParameterAttribute 属性

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

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 说明
DbType 字符串 指定数据库类型。
Name String 与数据库中的参数名相同的字符串 指定参数的名称。

有关详细信息,请参阅 ParameterAttribute

ResultTypeAttribute 属性

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

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 说明
Type 类型 (无) 用于映射到返回 IMultipleResults 的存储过程的方法。 为存储过程声明有效的或预期的类型映射。

有关详细信息,请参阅 ResultTypeAttribute

DataAttribute 属性

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

下表介绍了此属性 (Attribute) 的属性 (Property)。

属性 类型 默认 说明
Name String 与数据库中的名称相同 指定表、列等的名称。
Storage String 公共访问器 指定基础存储字段的名称。

有关详细信息,请参阅 DataAttribute

另请参阅