DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
Public Member Functions | Package Functions | Properties | Private Member Functions | Private Attributes | List of all members
Deveel.Data.Mapping.TypeMappingConfiguration< T > Class Template Reference
Inheritance diagram for Deveel.Data.Mapping.TypeMappingConfiguration< T >:
Deveel.Data.Mapping.ITypeMappingConfiguration

Public Member Functions

 TypeMappingConfiguration ()
 
TypeMappingConfiguration< T > ToTable (string name)
 
TypeMappingConfiguration< T > HasUniqueKey< TMember > (Expression< Func< T, TMember >> member)
 
MemberMappingConfiguration< T > Member< TMember > (Expression< Func< T, TMember >> member)
 
void Ignore< TMember > (Expression< Func< T, TMember >> member)
 

Package Functions

void Ignore (string memberName)
 

Properties

string TableName [get, set]
 
string UniqueKeyMember [get, set]
 
Type ITypeMappingConfiguration. ElementType [get]
 
string ITypeMappingConfiguration. TableName [get]
 
string ITypeMappingConfiguration. UniqueKeyMember [get]
 
IEnumerable< KeyValuePair< string, IMemberMappingConfiguration > > ITypeMappingConfiguration. Members [get]
 
- Properties inherited from Deveel.Data.Mapping.ITypeMappingConfiguration
Type ElementType [get]
 
string TableName [get]
 
string UniqueKeyMember [get]
 
IEnumerable< KeyValuePair< string, IMemberMappingConfiguration > > Members [get]
 

Private Member Functions

Dictionary< string, IMemberMappingConfigurationDiscoverMembers ()
 
string DiscoverTableName ()
 
MemberInfo GetMemberInfo< TProperty > (Expression< Func< T, TProperty >> memberSelector)
 

Private Attributes

Dictionary< string, IMemberMappingConfigurationmemberMappings
 
List< string > ignoredMembers
 

Detailed Description

Type Constraints
T :class 

Definition at line 7 of file TypeMappingConfiguration.cs.

Constructor & Destructor Documentation

Definition at line 11 of file TypeMappingConfiguration.cs.

Member Function Documentation

Dictionary<string, IMemberMappingConfiguration> Deveel.Data.Mapping.TypeMappingConfiguration< T >.DiscoverMembers ( )
inlineprivate

Definition at line 36 of file TypeMappingConfiguration.cs.

36  {
37  var dictionary = new Dictionary<string, IMemberMappingConfiguration>();
38 
39  var members = typeof (T).FindMembers(MemberTypes.Field | MemberTypes.Property, BindingFlags.Instance | BindingFlags.Public, null, null);
40  foreach (var memberInfo in members) {
41  if (!Attribute.IsDefined(memberInfo, typeof (IgnoreAttribute), false)) {
42  dictionary[memberInfo.Name] = new MemberMappingConfiguration<T>(this, memberInfo);
43  } else {
44  Ignore(memberInfo.Name);
45  }
46  }
47 
48  return dictionary;
49  }
string Deveel.Data.Mapping.TypeMappingConfiguration< T >.DiscoverTableName ( )
inlineprivate

Definition at line 51 of file TypeMappingConfiguration.cs.

51  {
52  var tableNameAttr = Attribute.GetCustomAttribute(typeof(T), typeof(TableAttribute), false)
53  as TableAttribute;
54  if (tableNameAttr == null)
55  return null;
56  return tableNameAttr.TableName;
57  }
MemberInfo Deveel.Data.Mapping.TypeMappingConfiguration< T >.GetMemberInfo< TProperty > ( Expression< Func< T, TProperty >>  memberSelector)
inlineprivate

Definition at line 59 of file TypeMappingConfiguration.cs.

59  {
60  var type = typeof(T);
61 
62  var member = memberSelector.Body as MemberExpression;
63  if (member == null)
64  throw new ArgumentException(string.Format("Expression '{0}' refers to a method, not a property.", memberSelector));
65 
66  var memberInfo = member.Member;
67  if (memberInfo == null)
68  throw new ArgumentException(string.Format("Expression '{0}' not refers to a field or a property.", memberSelector));
69 
70  if (type != memberInfo.ReflectedType &&
71  !type.IsSubclassOf(memberInfo.ReflectedType))
72  throw new ArgumentException(string.Format("Expresion '{0}' refers to a member that is not from type {1}.", memberSelector, type));
73 
74  return memberInfo;
75  }
TypeMappingConfiguration<T> Deveel.Data.Mapping.TypeMappingConfiguration< T >.HasUniqueKey< TMember > ( Expression< Func< T, TMember >>  member)
inline

Definition at line 82 of file TypeMappingConfiguration.cs.

82  {
83  if (!String.IsNullOrEmpty(UniqueKeyMember))
84  throw new InvalidOperationException("A unique key member is already configured.");
85 
86  var memberInfo = GetMemberInfo(member);
87  UniqueKeyMember = memberInfo.Name;
88  return this;
89  }
A long string in the system.
void Deveel.Data.Mapping.TypeMappingConfiguration< T >.Ignore ( string  memberName)
inlinepackage

Definition at line 115 of file TypeMappingConfiguration.cs.

115  {
116  if (ignoredMembers == null)
117  ignoredMembers = new List<string>();
118 
119  if (!ignoredMembers.Contains(memberName))
120  ignoredMembers.Add(memberName);
121  }
void Deveel.Data.Mapping.TypeMappingConfiguration< T >.Ignore< TMember > ( Expression< Func< T, TMember >>  member)
inline

Definition at line 108 of file TypeMappingConfiguration.cs.

108  {
109  var memberInfo = GetMemberInfo(member);
110  var memberName = memberInfo.Name;
111 
112  Ignore(memberName);
113  }
MemberMappingConfiguration<T> Deveel.Data.Mapping.TypeMappingConfiguration< T >.Member< TMember > ( Expression< Func< T, TMember >>  member)
inline

Definition at line 91 of file TypeMappingConfiguration.cs.

91  {
92  var memberInfo = GetMemberInfo(member);
93  var memberName = memberInfo.Name;
94 
95  if (ignoredMembers != null &&
96  ignoredMembers.Contains(memberName))
97  throw new InvalidOperationException(String.Format("Member '{0}' is ignored and cannot be configured.", memberName));
98 
99  IMemberMappingConfiguration configuration;
100  if (!memberMappings.TryGetValue(memberName, out configuration)) {
101  configuration = new MemberMappingConfiguration<T>(this, memberInfo);
102  memberMappings[memberName] = configuration;
103  }
104 
105  return (MemberMappingConfiguration<T>) configuration;
106  }
A long string in the system.
Dictionary< string, IMemberMappingConfiguration > memberMappings

Definition at line 77 of file TypeMappingConfiguration.cs.

77  {
78  TableName = name;
79  return this;
80  }

Member Data Documentation

List<string> Deveel.Data.Mapping.TypeMappingConfiguration< T >.ignoredMembers
private

Definition at line 9 of file TypeMappingConfiguration.cs.

Dictionary<string, IMemberMappingConfiguration> Deveel.Data.Mapping.TypeMappingConfiguration< T >.memberMappings
private

Definition at line 8 of file TypeMappingConfiguration.cs.

Property Documentation

Type ITypeMappingConfiguration. Deveel.Data.Mapping.TypeMappingConfiguration< T >.ElementType
getprivate

Definition at line 20 of file TypeMappingConfiguration.cs.

IEnumerable<KeyValuePair<string, IMemberMappingConfiguration> > ITypeMappingConfiguration. Deveel.Data.Mapping.TypeMappingConfiguration< T >.Members
getprivate

Definition at line 32 of file TypeMappingConfiguration.cs.

string Deveel.Data.Mapping.TypeMappingConfiguration< T >.TableName
getsetprivate

Definition at line 16 of file TypeMappingConfiguration.cs.

string ITypeMappingConfiguration. Deveel.Data.Mapping.TypeMappingConfiguration< T >.TableName
getprivate

Definition at line 24 of file TypeMappingConfiguration.cs.

string Deveel.Data.Mapping.TypeMappingConfiguration< T >.UniqueKeyMember
getsetprivate

Definition at line 18 of file TypeMappingConfiguration.cs.

string ITypeMappingConfiguration. Deveel.Data.Mapping.TypeMappingConfiguration< T >.UniqueKeyMember
getprivate

Definition at line 28 of file TypeMappingConfiguration.cs.


The documentation for this class was generated from the following file: