提交 69bcb39c 编写于 作者: A Adam Schroder

Allow ResultColumns to be optionally included in auto generated select sql

上级 50f0109a
...@@ -13,6 +13,12 @@ public class ColumnInfo ...@@ -13,6 +13,12 @@ public class ColumnInfo
public bool IgnoreColumn { get; set; } public bool IgnoreColumn { get; set; }
public bool ForceToUtc { get; set; } public bool ForceToUtc { get; set; }
public Type ColumnType { get; set; } public Type ColumnType { get; set; }
public bool IncludeColumnInAutoQuery { get; set; }
public ColumnInfo()
{
IncludeColumnInAutoQuery = true;
}
public static ColumnInfo FromMemberInfo(MemberInfo mi) public static ColumnInfo FromMemberInfo(MemberInfo mi)
{ {
...@@ -33,6 +39,7 @@ public static ColumnInfo FromMemberInfo(MemberInfo mi) ...@@ -33,6 +39,7 @@ public static ColumnInfo FromMemberInfo(MemberInfo mi)
{ {
ci.IgnoreColumn = true; ci.IgnoreColumn = true;
} }
ci.IncludeColumnInAutoQuery = true;
// Read attribute // Read attribute
if (colAttrs.Any()) if (colAttrs.Any())
...@@ -40,7 +47,13 @@ public static ColumnInfo FromMemberInfo(MemberInfo mi) ...@@ -40,7 +47,13 @@ public static ColumnInfo FromMemberInfo(MemberInfo mi)
var colattr = colAttrs.First(); var colattr = colAttrs.First();
ci.ColumnName = colattr.Name ?? mi.Name; ci.ColumnName = colattr.Name ?? mi.Name;
ci.ForceToUtc = colattr.ForceToUtc; ci.ForceToUtc = colattr.ForceToUtc;
ci.ResultColumn = colattr is ResultColumnAttribute;
var resultColumnAttr = colattr as ResultColumnAttribute;
if (resultColumnAttr != null)
{
ci.ResultColumn = true;
ci.IncludeColumnInAutoQuery = resultColumnAttr.IncludeInAutoSelect;
}
} }
else else
{ {
......
...@@ -32,6 +32,7 @@ public interface IColumnBuilder ...@@ -32,6 +32,7 @@ public interface IColumnBuilder
IColumnBuilder Version(); IColumnBuilder Version();
IColumnBuilder Ignore(); IColumnBuilder Ignore();
IColumnBuilder Result(); IColumnBuilder Result();
IColumnBuilder Result(bool includeInAutoQuery);
} }
public class ColumnBuilder : IColumnBuilder public class ColumnBuilder : IColumnBuilder
...@@ -74,6 +75,14 @@ public IColumnBuilder Ignore() ...@@ -74,6 +75,14 @@ public IColumnBuilder Ignore()
public IColumnBuilder Result() public IColumnBuilder Result()
{ {
_columnDefinition.IncludeInAutoQuery = false;
_columnDefinition.ResultColumn = true;
return this;
}
public IColumnBuilder Result(bool includeInAutoQuery)
{
_columnDefinition.IncludeInAutoQuery = includeInAutoQuery;
_columnDefinition.ResultColumn = true; _columnDefinition.ResultColumn = true;
return this; return this;
} }
......
...@@ -12,5 +12,6 @@ public class ColumnDefinition ...@@ -12,5 +12,6 @@ public class ColumnDefinition
public bool? IgnoreColumn { get; set; } public bool? IgnoreColumn { get; set; }
public bool? VersionColumn { get; set; } public bool? VersionColumn { get; set; }
public bool? ForceUtc { get; set; } public bool? ForceUtc { get; set; }
public bool? IncludeInAutoQuery { get; set; }
} }
} }
\ No newline at end of file
...@@ -142,6 +142,7 @@ private static void MergeOverrides(Dictionary<Type, TypeDefinition> config, Mapp ...@@ -142,6 +142,7 @@ private static void MergeOverrides(Dictionary<Type, TypeDefinition> config, Mapp
convColDefinition.VersionColumn = overrideColumnDefinition.Value.VersionColumn ?? convColDefinition.VersionColumn; convColDefinition.VersionColumn = overrideColumnDefinition.Value.VersionColumn ?? convColDefinition.VersionColumn;
convColDefinition.MemberInfo = overrideColumnDefinition.Value.MemberInfo ?? convColDefinition.MemberInfo; convColDefinition.MemberInfo = overrideColumnDefinition.Value.MemberInfo ?? convColDefinition.MemberInfo;
convColDefinition.ForceUtc = overrideColumnDefinition.Value.ForceUtc ?? convColDefinition.ForceUtc; convColDefinition.ForceUtc = overrideColumnDefinition.Value.ForceUtc ?? convColDefinition.ForceUtc;
convColDefinition.IncludeInAutoQuery = overrideColumnDefinition.Value.IncludeInAutoQuery ?? convColDefinition.IncludeInAutoQuery;
} }
} }
} }
......
...@@ -66,6 +66,8 @@ public FluentMappingsPocoData(Type t, TypeDefinition typeConfig, IMapper mapper) ...@@ -66,6 +66,8 @@ public FluentMappingsPocoData(Type t, TypeDefinition typeConfig, IMapper mapper)
if (colattr.ForceUtc.HasValue && colattr.ForceUtc.Value) if (colattr.ForceUtc.HasValue && colattr.ForceUtc.Value)
pc.ForceToUtc = true; pc.ForceToUtc = true;
if (colattr.IncludeInAutoQuery.HasValue && colattr.IncludeInAutoQuery.Value)
pc.IncludeInAutoQuery = true;
for (int i = 0; i < originalPK.Length; i++) for (int i = 0; i < originalPK.Length; i++)
{ {
...@@ -92,7 +94,7 @@ public FluentMappingsPocoData(Type t, TypeDefinition typeConfig, IMapper mapper) ...@@ -92,7 +94,7 @@ public FluentMappingsPocoData(Type t, TypeDefinition typeConfig, IMapper mapper)
TableInfo.PrimaryKey = String.Join(",", originalPK); TableInfo.PrimaryKey = String.Join(",", originalPK);
// Build column list for automatic select // Build column list for automatic select
QueryColumns = Columns.Where(x => !x.Value.ResultColumn).ToArray(); QueryColumns = Columns.Where(x => x.Value.IncludeInAutoQuery).ToArray();
} }
} }
......
...@@ -8,6 +8,7 @@ public class PocoColumn ...@@ -8,6 +8,7 @@ public class PocoColumn
public PocoColumn() public PocoColumn()
{ {
ForceToUtc = true; ForceToUtc = true;
IncludeInAutoQuery = true;
} }
public TableInfo TableInfo; public TableInfo TableInfo;
...@@ -24,6 +25,7 @@ public Type ColumnType ...@@ -24,6 +25,7 @@ public Type ColumnType
public bool ForceToUtc { get; set; } public bool ForceToUtc { get; set; }
public string AutoAlias { get; set; } public string AutoAlias { get; set; }
public bool IncludeInAutoQuery { get; set; }
public virtual void SetValue(object target, object val) { MemberInfo.SetMemberInfoValue(target, val); } public virtual void SetValue(object target, object val) { MemberInfo.SetMemberInfoValue(target, val); }
public virtual object GetValue(object target) { return MemberInfo.GetMemberInfoValue(target); } public virtual object GetValue(object target) { return MemberInfo.GetMemberInfoValue(target); }
......
...@@ -60,6 +60,7 @@ public PocoData(Type t, IMapper mapper) : this() ...@@ -60,6 +60,7 @@ public PocoData(Type t, IMapper mapper) : this()
pc.ResultColumn = ci.ResultColumn; pc.ResultColumn = ci.ResultColumn;
pc.ForceToUtc = ci.ForceToUtc; pc.ForceToUtc = ci.ForceToUtc;
pc.ColumnType = ci.ColumnType; pc.ColumnType = ci.ColumnType;
pc.IncludeInAutoQuery = ci.IncludeColumnInAutoQuery;
if (Mapper != null && !Mapper.MapMemberToColumn(mi, ref pc.ColumnName, ref pc.ResultColumn)) if (Mapper != null && !Mapper.MapMemberToColumn(mi, ref pc.ColumnName, ref pc.ResultColumn))
continue; continue;
...@@ -71,7 +72,7 @@ public PocoData(Type t, IMapper mapper) : this() ...@@ -71,7 +72,7 @@ public PocoData(Type t, IMapper mapper) : this()
} }
// Build column list for automatic select // Build column list for automatic select
QueryColumns = Columns.Where(c => !c.Value.ResultColumn).ToArray(); QueryColumns = Columns.Where(c => c.Value.IncludeInAutoQuery).ToArray();
} }
protected string CreateAlias(string typeName, Type typeIn) protected string CreateAlias(string typeName, Type typeIn)
......
...@@ -5,6 +5,7 @@ namespace NPoco ...@@ -5,6 +5,7 @@ namespace NPoco
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
public class ResultColumnAttribute : ColumnAttribute public class ResultColumnAttribute : ColumnAttribute
{ {
public bool IncludeInAutoSelect { get; set; }
public ResultColumnAttribute() { } public ResultColumnAttribute() { }
public ResultColumnAttribute(string name) : base(name) { } public ResultColumnAttribute(string name) : base(name) { }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册