cho*_*bo2 4 nhibernate fluent-nhibernate
我一直在为初学者阅读 nhibernate 3.0 并阅读了一些常见错误(我犯了一些错误)
我想知道将一个或多个记录设为只读有哪些策略。现在我取回所有行并循环遍历它们,使它们通过 session.Readonly() 成为只读。
我喜欢在书中他们用流利的方式做的
class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
SchemaAction.None();
ReadOnly();
// Mappings
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定的是,如果我需要这些记录不是只读的,会发生什么?对我来说,这意味着我必须制作完全相同的映射减去那两行代码。
所以我想这样做并拥有 ReadonlyEntityMap 和 EntityMap 但我宁愿不必将所有设置复制两次。
任何人都有关于如何做到这一点的想法?或者更好的 readonly 想法?
ReadOnly()当您修改对象的属性时,在您的映射上使用将禁用对数据库的任何更新。
如果你想应用某种 ReadOnly 和 Writeable 策略,我建议使用Fluent 约定和标记界面或类似的。
ReadOnly()如果您只想禁用对该属性的写入,您也可以申请该属性。我使用该技术来避免写回 SQL Server 中的计算列。
像这样的东西:
public interface IReadOnly{} //Mark entities with this interface
public class ReadOnlyConvention
: IClassConvention, IClassConventionAcceptance<IClassInspector>
{
public void Accept(IAcceptanceCriteria<IClassInspector> criteria)
{
criteria.Expect(x => x.EntityType Is IReadOnly);
}
public void Apply(IClassInstance instance)
{
instance.ReadOnly();
}
}
Run Code Online (Sandbox Code Playgroud)
更新:如果您想做时间转换,我建议为您的 DateTime 对象创建一个 IUserType,该对象在不修改基础数据的情况下转换为用户时间。
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |