我一直在尋找最近的ORM和SubSonic及其SimpleRepository似乎是我正在尋找的解決方案。在Subsonic SimpleRepository中使用我自己的屬性
有沒有辦法使用我自己的屬性或從System.ComponentModel
驅動一些SQL代?我想保持我的模型/域對象清理第三方的東西。
我一直在尋找最近的ORM和SubSonic及其SimpleRepository似乎是我正在尋找的解決方案。在Subsonic SimpleRepository中使用我自己的屬性
有沒有辦法使用我自己的屬性或從System.ComponentModel
驅動一些SQL代?我想保持我的模型/域對象清理第三方的東西。
我不會建議,但這可以做到。
創建匹配SubSonics屬性(像OrmIgnore
而不是SubSonicIgnore
你自己的屬性時,還是要實現SubSonic.SqlGeneration.Schema.IClassMappingAttribute
或SubSonic.SqlGeneration.Schema.IPropertyMappingAttribute
或SubSonic.SqlGeneration.Schema.IRelationMappingAttribute
看從SubSonic.Core \擴展\ Object.cs此代碼來獲得一個想法發生了什麼
public static ITable ToSchemaTable(this Type type, IDataProvider provider)
{
...
var typeAttributes = type.GetCustomAttributes(typeof(IClassMappingAttribute), false);
foreach (IClassMappingAttribute attr in typeAttributes)
{
if (attr.Accept(result))
{
attr.Apply(result);
}
}
...
// Now work with attributes
foreach (IPropertyMappingAttribute attr in attributes.Where(x => x is IPropertyMappingAttribute))
{
if (attr.Accept(column))
{
attr.Apply(column);
}
}
....
}
您的應用實現應修改架構做你想做什麼 贊一個(從SubSonicDefaultSettingAttribute):
public void Apply(IColumn column)
{
column.DefaultSetting = DefaultSetting;
}
你應該檢查亞音速源和標記每一個自定義屬性爲過時
[Obsolete("Use OrmIgnore instead", true)]
[AttributeUsage(AttributeTargets.Property)]
public class SubSonicIgnoreAttribute : Attribute { }
有到您將需要修復的屬性(不使用的接口)的一些直接引用。
,你將不得不尋找字符串引用
private static bool ColumnIsIgnored(object[] attributes)
{
foreach (var att in attributes)
{
if (att.ToString().Equals("SubSonic.SqlGeneration.Schema.SubSonicIgnoreAttribute"))
{
return true;
}
}
return false;
}
與
private static bool ColumnIsIgnored(object[] attributes)
{
foreach (var att in attributes)
{
if (att.ToString().EndsWith("OrmIgnoreAttribute"))
{
return true;
}
}
return false;
}
爲什麼-1 ????? –