[英]Dynamically property .Not.Insert().Not.Update() Mapping Fluent NHibernate
我将Fluent NHibernate与自动映射功能一起使用!
我目前正在使用以下映射语句来防止自动生成的列值被更新/插入
.Override<Entity>(map => map.Map(d => d.STATUS).Not.Insert().Not.Update())
到目前为止,它运行良好,但现在我正在寻找一种方法来更动态地解决此问题。
我想做的是:
我想声明一个名为[ReadOnlyDbField]的自定义属性,然后用该自定义属性声明该实体的所有属性,说:只读取该值,而不更新/插入它。
然后我想告诉映射配置:
Map all properties with the custom attribute [ReadOnlyDbField] to Not.Insert().Not.Update()
有办法吗?
谢谢
丹尼尔
您必须创建一个属性类
public class NoInsertUpdateAttribute : Attribute
{
}
以及另一个约定的类:
public class NoInsertUpdateConvention : AttributePropertyConvention<NoInsertUpdateAttribute>
{
protected override void Apply(NoInsertUpdateAttribute attribute, IPropertyInstance instance)
{
instance.Not.Insert();
instance.Not.Update();
}
}
并将NoInsertUpdateConvention类的容器程序集添加到自动映射:
var fluentConfiguration = Fluently
.Configure()
.Mappings(
m => {
var autoMap = AutoMap
.Conventions.AddFromAssemblyOf<NoInsertUpdateConvention>()
}
);
最后,将属性添加到您不想插入或更新的属性中:
[NoInsertUpdate]
public virtual int? AccountID { get; set; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.