Type Mapping: From LINQ to SharePoint Provider to .NET
Applies to: SharePoint Foundation 2010
This article shows how the LINQ to SharePoint provider maps Microsoft SharePoint Foundation field (column) types onto Microsoft .NET Framework types.
Type Mapping Table
Field Type |
.NET Type |
Comments |
---|---|---|
AllDayEvent |
||
Attachments |
||
Boolean |
||
Calculated |
Type of the returned value |
|
Choice |
Enum or String |
See Choice and MultiChoice Fields. |
Computed |
||
ContentTypeId |
Byte[] |
|
Counter |
||
CrossProjectLink |
||
Currency |
||
DateTime |
||
File |
||
GridChoice |
||
Guid |
||
Integer |
Int32 or Nullable<T>, where T is Int32. |
|
Lookup |
See Lookup Fields. |
|
MaxItems |
||
ModStat |
||
MultiChoice |
Flagged Enum or String |
See Choice and MultiChoice Fields. |
Note |
||
Number |
||
PageSeparator |
||
Recurrence |
||
Text |
||
ThreadIndex |
||
Threading |
||
URL |
||
User |
A User field is a lookup field to the User Information List (which is a hidden list by default). See Lookup Fields. |
|
WorkflowEventType |
||
WorkflowStatus |
Choice and MultiChoice Fields
The type mapping of Choice and MultiChoice field types depends on whether "Fill-in" choices are allowed and on how many choices there are as specified in the following table.
Fill-in Choices Not Allowed and Fewer than 31 Choices Available |
Fill-in Choices Not Allowed and more than 30 Choices Available |
Fill-in Choices Allowed |
|
---|---|---|---|
Choice Fields |
A Microsoft .NET Framework enum type with all of the available choices numbered starting with 1. The enum includes an Invalid value (-1) and a None value (0). The class is named FieldNameChoices, where FieldName is the name of the field. |
<-- Same as to the left. |
String. (SPMetal creates a sealed class that contains a set of String constants, one for each available choice.) |
MultiChoice Fields |
Same as the previous, except that the enum is flagged. |
Same as to the right --> |
IList<String>. (SPMetal creates a sealed class that contains a set of String constants, one for each available choice.) |
Lookup Fields
The type mapping of Lookup and User fields depends on whether the field allows multiple values or not, and on whether the target list is represented in the code generated by SPMetal, which it may not be if the target list is hidden or SPMetal is configured to exclude the list. The following table shows the possibilities.
Multiple Values Not Allowed |
Multiple Values Allowed |
|
---|---|---|
The Target List is Represented in the Generated Code |
When the target list is represented in generated code, the Lookup field does not map to any .NET Framework basic type. SPMetal generates a private field type EntityRef<TEntity> where the TEntity is the content type of the target list, not the type of the target column. This property is wrapped in a generated property of type TEntity. |
The remarks to the left apply here also, except that the field is represented as both a private field and a property of type EntitySet<TEntity>, where TEntity is the content type of the target list. |
The Target List is not Represented in the Generated Code |
The field is represented twice in the object-relational mapping:
In addition, a second property/field pair is generated to represent the ID field of the target list. Both the field and property are type Nullable<T>, where T is Int32. |
The field is represented twice in the object-relational mapping:
In addition, a second IList<T> property and LookupList<T> field pair is generated to represent the ID field of the target list. The T for both is a Nullable<T>, where T is Int32. |
Note
A User field is a lookup field to the User Information List. The latter is hidden, so by default, SPMetal does not generate code to represent it.