Mercurial > pub > bltoolkit
diff Source/Mapping/Fluent/MapFieldMap.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Source/Mapping/Fluent/MapFieldMap.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq.Expressions; + +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.Mapping.Fluent +{ + /// <summary> + /// Fluent settings for field + /// </summary> + /// <typeparam name="T"></typeparam> + /// <typeparam name="TR"></typeparam> + public partial class MapFieldMap<T, TR> : FluentMap<T> + { + private readonly Expression<Func<T, TR>> _prop; + + public MapFieldMap(TypeExtension owner, List<IFluentMap> childs, Expression<Func<T, TR>> prop) + : base(owner, childs) + { + this._prop = prop; + } + + /// <summary> + /// PrimaryKeyAttribute + /// </summary> + /// <typeparam name="TR"></typeparam> + /// <param name="order"></param> + /// <returns></returns> + public MapFieldMap<T, TR> PrimaryKey(int order = -1) + { + return this.PrimaryKey(this._prop, order); + } + + public MapFieldMap<T, TR> LazyInstance(bool isLazy = true) + { + return this.LazyInstance(this._prop, isLazy); + } + + + /// <summary> + /// NonUpdatableAttribute + /// </summary> + /// <returns></returns> + public MapFieldMap<T, TR> NonUpdatable() + { + return this.NonUpdatable(this._prop); + } + + /// <summary> + /// IdentityAttribute + /// </summary> + /// <typeparam name="TR"></typeparam> + /// <returns></returns> + public MapFieldMap<T, TR> Identity() + { + return this.Identity(this._prop); + } + + /// <summary> + /// SqlIgnoreAttribute + /// </summary> + /// <param name="ignore"></param> + /// <returns></returns> + public MapFieldMap<T, TR> SqlIgnore(bool ignore = true) + { + return this.SqlIgnore(this._prop, ignore); + } + + /// <summary> + /// MapIgnoreAttribute + /// </summary> + /// <param name="ignore"></param> + /// <returns></returns> + public MapFieldMap<T, TR> MapIgnore(bool ignore = true) + { + return this.MapIgnore(this._prop, ignore); + } + + /// <summary> + /// TrimmableAttribute + /// </summary> + /// <returns></returns> + public MapFieldMap<T, TR> Trimmable() + { + return this.Trimmable(this._prop); + } + + /// <summary> + /// MapValueAttribute + /// </summary> + /// <typeparam name="TV"> </typeparam> + /// <param name="origValue"></param> + /// <param name="value"></param> + /// <param name="values"></param> + /// <returns></returns> + public MapFieldMap<T, TR> MapValue<TV>(TR origValue, TV value, params TV[] values) + { + return this.MapValue(this._prop, origValue, value, values); + } + + /// <summary> + /// DefaultValueAttribute + /// </summary> + /// <param name="value"></param> + /// <returns></returns> + public MapFieldMap<T, TR> DefaultValue(TR value) + { + return this.DefaultValue(this._prop, value); + } + + /// <summary> + /// DbTypeAttribute + /// </summary> + /// <param name="dbType"></param> + /// <returns></returns> + public MapFieldMap<T, TR> DbType(DbType dbType) + { + return this.DbType(this._prop, dbType); + } + + /// <summary> + /// MemberMapperAttribute + /// at the Moment you also have to specify MapIgnore(false) when using Complex types with Member Mapper. + /// </summary> + /// <param name="value"></param> + /// <returns></returns> + public MapFieldMap<T, TR> MemberMapper(Type memberMapperType) + { + return this.MemberMapper(this._prop, memberMapperType); + } + + /// <summary> + /// MemberMapperAttribute + /// at the Moment you also have to specify MapIgnore(false) when using Complex types with Member Mapper. + /// </summary> + /// <param name="value"></param> + /// <returns></returns> + public MapFieldMap<T, TR> MemberMapper(Type memberType, Type memberMapperType) + { + return this.MemberMapper(this._prop, memberType, memberMapperType); + } + + /// <summary> + /// NullableAttribute + /// </summary> + /// <param name="isNullable"></param> + /// <returns></returns> + public MapFieldMap<T, TR> Nullable(bool isNullable = true) + { + return this.Nullable(this._prop, isNullable); + } + + /// <summary> + /// NullValueAttribute + /// </summary> + /// <param name="value"></param> + /// <returns></returns> + public MapFieldMap<T, TR> NullValue(TR value) + { + return this.NullValue(this._prop, value); + } + + /// <summary> + /// AssociationAttribute + /// </summary> + /// <typeparam name="TRt"></typeparam> + /// <param name="canBeNull"></param> + /// <param name="thisKey"></param> + /// <param name="thisKeys"></param> + /// <returns></returns> + public AssociationMap<TRt> Association<TRt>(bool canBeNull, Expression<Func<T, TRt>> thisKey, params Expression<Func<T, TRt>>[] thisKeys) + { + return this.Association(this._prop, canBeNull, thisKey, thisKeys); + } + + /// <summary> + /// AssociationAttribute + /// </summary> + /// <typeparam name="TRt"></typeparam> + /// <param name="thisKey"></param> + /// <param name="thisKeys"></param> + /// <returns></returns> + public AssociationMap<TRt> Association<TRt>(Expression<Func<T, TRt>> thisKey, params Expression<Func<T, TRt>>[] thisKeys) + { + return this.Association(this._prop, thisKey, thisKeys); + } + + private MapFieldMap<T, TR> Association<TRt, TRf, TRo>(bool canBeNull + , IEnumerable<Expression<Func<T, TRt>>> thisKeys, IEnumerable<Expression<Func<TRf, TRo>>> otherKeys) + { + return this.Association(this._prop, canBeNull, thisKeys, otherKeys); + } + + /// <summary> + /// RelationAttribute + /// </summary> + /// <param name="slaveIndex"></param> + /// <param name="masterIndex"></param> + /// <returns></returns> + public MapFieldMap<T, TR> Relation(string slaveIndex = null, string masterIndex = null) + { + return this.Relation(this._prop, slaveIndex, masterIndex); + } + + /// <summary> + /// RelationAttribute + /// </summary> + /// <param name="slaveIndex"></param> + /// <param name="masterIndex"></param> + /// <returns></returns> + public MapFieldMap<T, TR> Relation(string[] slaveIndex, string[] masterIndex) + { + return this.Relation(this._prop, slaveIndex, masterIndex); + } + } +} \ No newline at end of file