Dan*_* W. 1 nhibernate fluent automapping
我使用Fluent NHibernate和自动功能.现在我正在寻找像配置,设置,自定义属性 - 无论如何 - 将实体属性声明为"ReadOnlyFromDb"
在MsSql数据库中,我在其中一个表中使用计算列,其中根据特定数据行的某些其他值计算值.现在我已将实体类中的此列声明为
public virtual int STATUS { get; private set; }
Run Code Online (Sandbox Code Playgroud)
获取表格的具体数据一切正常.STATUS使用数据表中的特定值填充属性.
当我尝试SaveUpdate()特定对象时出现问题.我总是得到例外
A computed column cannot be the target of an INSERT or UPDATE statement
Run Code Online (Sandbox Code Playgroud)
这对我的理解是正确的 - 以及它应该如何;)!
基本上我正在寻找配置,设置,自定义属性 - 无论如何 - 要说
Hey Fluent NHibernate - 获取特定属性
propertyName但不插入/更新属性propertyName
有类似的东西吗?或者这种情况是否存在解决方法?我搜索了流利的nhibernate wiki,但没有找到一个smilliar案例.
我希望有人已经面对并解决了这个问题!
以下是我创建会话的代码片段(可能有帮助):
public static ISessionFactory GetNHibernateSession()
{
if (nhibernateSession != null)
return nhibernateSession;
if (ConfigurationManager.AppSettings[msSqlConnectionString] == null || ConfigurationManager.AppSettings[msSqlConnectionString] == String.Empty)
throw new NullReferenceException(String.Format("AppSetting '{0}' must not be null!", msSqlConnectionString));
//nhibernateSession = Fluently.Configure().Database(MsSqlConfiguration.MsSql2005.ConnectionString(ConfigurationManager.AppSettings[msSqlConnectionString]))
// .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<T_ABWEICHUNGEN>().IgnoreBase<BaseClass>)).BuildSessionFactory();
nhibernateSession = Fluently.Configure().Database(MsSqlConfiguration.MsSql2005.ConnectionString(ConfigurationManager.AppSettings[msSqlConnectionString]))
.Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly())
.Override<T_ABWEICHUNGEN>(map =>map.Map(d => d.A08_STATUS_FILE).Length(2147483647))
.IgnoreBase(typeof(BaseClass))
.IgnoreBase(typeof(IDColumn))
.IgnoreBase(typeof(MsSqlQuery))
.IgnoreBase(typeof(MsSqlParamCollection))
.IgnoreBase(typeof(AbweichungStatus))
)).BuildSessionFactory();
return nhibernateSession;
}
}
Run Code Online (Sandbox Code Playgroud)
感谢到目前为止的回应 - 迄今为止帮助了我.但是 - 有没有办法让这个问题更"动态"地解决?
例如:
我想声明一个名为[ReadOnlyDbField]now 的自定义属性,声明具有此cusomt属性的实体的所有属性:只需读取此值,不要更新/插入它.
基本上我想在配置中说
Map all properties with the custom attribute [ReadOnlyDbField] to Not.Insert().Not.Update()
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个?
.Override<Entity>(map => map.Map(d => d.STATUS).Not.Insert().Not.Update())
Run Code Online (Sandbox Code Playgroud)
更新:已编辑问题的帐户
public class ReadonlyDbFielConvention : AttributePropertyConvention<ReadOnlyDbField>
{
protected override void Apply(ReadOnlyDbField attribute, IPropertyInstance instance)
{
instance.Not.Insert();
instance.Not.Update();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |